scala - 使用scala读取hbase值,转换问题
问题描述
我正在使用 scala 从 Hbase 列中读取数值数据,这些列之前是通过 Phoenix 填充的。我可以读取列值,但是当我将它们转换为字符串时,我仍然有字节值而不是实数,因此字符串填充了一些不可打印的值。
我假设问题出在我映射 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
我的任务是读取值并转换为字符串以查看实际数字。
我在 HBASE 和 scala 中相对较新,所以任何澄清都将不胜感激。
谢谢
解决方案
推荐阅读
- stored-procedures - 从没有凭据的存储过程调用 sqlcmd
- html - CSS:过渡只影响最后一个元素
- python - Django Rest Framework 字符串序列化器列表
- java - 如何在 Keycloak 中添加自定义 FTL 页面?
- excel - 如何修改此代码以引用不同工作表中的单元格
- hyperledger-fabric - 带有 Node SDK 的 Hyperledger 2.1:无法调用链代码
- join - 带有聚合错误的 ksqlDB 流连接表
- ormlite - 如何在 ORMLite Android 中存储 byte[]?
- node.js - Express JS / MongoDB
- javascript - 继续在移动设备上以“屏幕关闭/背景”运行 WebApp