我正在使用scala从Hbase列中读取数值数据,这些数据先前是通过Phoenix填充的。我可以读取列值,但是当我将它们转换为String时,我仍然拥有字节值,而不是实数,因此String填充了一些不可打印的值。
我认为映射RDD时问题出在转换中。 这是我用来映射RDD的代码:
val hBaseRDD = sc.newAPIHadoopRDD(conf, classOf[TableInputFormat], classOf[ImmutableBytesWritable], classOf[Result])
val stocksRdd = hBaseRDD.map {
case (key: ImmutableBytesWritable, value: Result) =>
(new String(value.getValue(Bytes.toBytes(indVarFamCol), Bytes.toBytes(indVar))),
new String(value.getValue(Bytes.toBytes(depVarFamCol), Bytes.toBytes(depVar))))
}
stocksRdd.take(10).foreach(println)
我的实际结果是:
(�,�) (�,�) (�,�) (�,�) .....
但是应该是:
(5,5) (23,55) (12,234) (23,55) .....
我正在阅读的hbase表条目的外观如下:
\ x80 \ x00 \ x07x列= 0:YEARSOFEDU,时间戳= 1555763290217,值= \ x80 \ x00 \ x00 \ x10
我的任务是读取值并将其转换为String以查看实际数字。
我在HBASE和Scala中相对较新,因此任何澄清将不胜感激。
谢谢