使用Scala读取hbase值,出现转换问题

时间:2019-05-03 16:29:39

标签: scala apache-spark hbase phoenix

我正在使用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中相对较新,因此任何澄清将不胜感激。

谢谢

0 个答案:

没有答案
相关问题