【问题标题】:Can't get stored python integer back in java in habase google cloud无法在habase谷歌云中的java中获取存储的python整数
【发布时间】:2016-11-15 22:51:14
【问题描述】:

我使用 hbase over google cloud bigtable 来存储我的大数据。我有 2 个程序。首先,使用 python 将数据存储到 hbase 中,其次,通过连接到同一个端点从 java 中读取这些信息。

所以我可以从 python 交互式 shell 中将字节数组读回整数(命令 15)

In [13]: row.cells['stat']['viewability'][0].value 
Out[13]: '\x00\x00\x00\x00\x00\x00\x00A'

In [14]: len(row.cells['stat']['viewability'][0].value) 
Out[14]: 8

In [15]: struct.unpack('>Q', row.cells['stat']['viewability'][0].value) 
Out[15]: (65,)

但我无法将相同的字节数组读回 java Integer 数据类型
我在java中使用以下内容

byte[] columnFamilyBytes = Bytes.toBytes("stat");
byte[] viewabilityColumnBytes = Bytes.toBytes("viewability");
Integer viewability = Bytes.toInt(c1.getValue(columnFamilyBytes, viewabilityColumnBytes));

我得到 NULL 作为响应。

【问题讨论】:

  • 说 c1 是 HBase Result 对象是否正确?如果是这样,您能否验证结果中是否存在 stat:viewability 单元格(最简单的方法似乎是打印出 c1.toString() 的结果,假设结果不大)。

标签: java python hbase google-cloud-dataproc


【解决方案1】:

我发现了问题
该列存储为 long 值,所以我必须先在 java 中读取它,然后将其转换为 int

【讨论】:

    猜你喜欢
    • 2020-08-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-02-15
    • 1970-01-01
    • 1970-01-01
    • 2014-08-11
    相关资源
    最近更新 更多