Hbase多种API,我在项目中使用是Happybase。一些常用的操作在Happybase官网都有示例,而我在使用table.scan()方法,传入Filter时,找不到参考,不知道具体的语法。经过一番参考和测试,终于实现了想要的功能。现记录如下,供大家参考。
Hbase Filter有很多种,具体可以参考Hbase官网关于Filter的介绍。
平时最常用,网上例子最多的Filter就是 SingleColumnValueFilter。
for k, v in table.scan(filter="SingleColumnValueFilter ('f', 'qual1', =, 'binary:val1')"):
print v
我要用的是ColumnPrefixFilter和TimestampsFilter,并且两个Filter要联合使用。经过测试,具体语法如下:
query_str = "ColumnPrefixFilter('your_prsifx_str') AND TimestampsFilter(your_timestamp)"
for k, v in table.scan(filter=query_str):
print k
说明:
- ColumnPrefixFilter传入的参数为String格式,TimestampsFilter传入的参数为bigint,注意不要使用''包裹TimestampsFilter的参数。
- 多个Filter联合使用,中间用AND或OR连接,注意使用全大写。
- 循环中的 k 为rowkey,v 是匹配的列,为字典类型{column_name:value}。