python读取hbase数据和分析_Python 读写 hbase 数据的正确姿势(二)

title: Python 读写 hbase 数据的正确姿势(二)

tags:

hbase

happybase

python

categories:

�Hbase

comments: true

date: 2017-09-17 18:00:00

问题1:小续

上一篇文章中讨论了,在使用 filter 查询 hbase 的过程中,使用python 容易忽略的一个问题:存储整型数据的时候,容易忽略将整型数据转换成 bytes 数据进行存储,进而使用 java filter 过滤时无法过滤出正确的结果。

仔细分析这个问题的发生的过程:

使用 python 将整型数据使用 str() 强转成字符串存入 hbase

使用 java 的相关 filter,传入参数时直接使用 Bytes.toBytes(1) 方法将整型转成 bytes 查询

无法得出正确的结果

其发生的根本原因是: 存入 hbase 的 1 这个值是 str(1) ,而使用 java 查的时候传入的过滤参数是 int(1) 转成的 bytes,这两者本身就不是一个类型,所以才会查出异常的结果。因此如果想用 java 在这种场景下查出正确的结果还有另一种方法,即传入的过滤参数是str(1) 转成的 bytes!

SingleColumnValueFilter filter1 = new SingleColumnValueFilter(Bytes.toBytes("basic"),

Bytes.toBytes("ArticleTypeID"),

CompareOp.EQUAL, Bytes.toBytes("1"));

// 注意这里将传入的是字符串"1",而不是1L 这个整数

// Scan python table `test_article_1`

System.out.println("Prepare to scan !");

ResultScanner scanner = table.getScanner(s);

int num = 0;

for (Result rr = scanner.next(); rr != null; rr = scanner.next()) {

num++;

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值