采纳答案成功!
向帮助你的同学说点啥吧!感谢那些助人为乐的人
老师您好,使用incrementColumnValue写入hbase后,查询出来的value是乱码
hbase中的数据都是byte[]类型的,所以你查出来之后,你可以转成你想要的类型,比如字符串等。
另外你可以把你hbase看到的,以及你是如何查询的看到乱码,贴出来看下
写入hbase的代码: saveDS.foreachRDD(rdd=>{ rdd.foreachPartition(partition=>{ val table=ConnectionUtils.getHBaseTable("order_fee") partition.foreach(line=>{ table.incrementColumnValue( //hbase自增的功能 line._1.getBytes(), "info".getBytes(), "fee".getBytes(), line._2.toLong ) }) table.close() }) }) hbase shell查询的结果: 202306091131 column=info:fee, timestamp=1686281515200, value=\x00\x00\x00\x00\x00\x00\x04\xE2 202306091132 column=info:fee, timestamp=1686281540114, value=\x00\x00\x00\x00\x00\x00\x02\xEB
查询hbase的代码: val configuration: Configuration = HBaseConfiguration.create() configuration.set("hbase.zookeeper.quorum","hadoop:2181") val connection: client.Connection = ConnectionFactory.createConnection(configuration) val table=connection.getTable(TableName.valueOf("order_fee")) val scanner: ResultScanner = table.getScanner(new Scan()) val results: util.Iterator[Result] = scanner.iterator() while(results.hasNext){ val result: Result = results.next() val cells: util.List[Cell] = result.listCells() cells.forEach(cell=>{ val bytes: Array[Byte] = CellUtil.cloneValue(cell) val str = Bytes.toString(bytes) println(str) }) /* val bytes: Array[Byte] = result.getValue("info".getBytes(),"fee".getBytes()) val value: String = Bytes.toString(bytes) println(value)*/ } 查询结果显示: � �
课程qq群里找我,把你的这个测试代码和数据准备好,就一条数据就行,发我,我周末测试下。只要最精简能跑的代码抽取出来给我,不要全部整个工程给
登录后可查看更多问答,登录/注册
实战Spark3实时处理,掌握两套企业级处理方案
1.9k 15
1.1k 15
1.2k 12
928 11
1.2k 9