我想用Happybase对一些已知的行键执行rows
查询,并添加一个值过滤器,以便只返回与过滤器匹配的行。
在HBase shell中,您可以为get命令提供过滤器,如下所示:
get 'meta', 'someuser', {FILTER => "SingleColumnValueFilter ('cf','gender',=,'regexstring:^male$')"}
在Happybase中,您可以向scan
命令添加过滤器,但我在rows
查询中看不到该选项。以下是scan
的工作原理:
rows = tab.scan(filter="SingleColumnValueFilter('cf','gender',=,'regexstring:^male$')")
有没有办法使用Happybase(或任何其他Python HBase客户端库)执行过滤的rows
查询(对于可能随机排序的行键)?
我想象它看起来像这样(但没有过滤器参数):
rows = tab.rows(rows=['h_key', 'a_key', 'z_key'], filter="SingleColumnValueFilter('cf','gender',=,'regexstring:^male$')")
答案 0 :(得分:0)
获取过滤器等于使用开始/停止行扫描。
rows = tab.scan(filter="SingleColumnValueFilter('cf','gender',=,'regexstring:^male$')",
row_start="someuser", row_stop="someuser")
在Java中,FilterList
合并MultiRowRangeFilter
和SingleColumnValueFilte
r将完全满足您的需求,并且有一个example。
但是,由于happyhbase
使用Hbase Thrift服务,似乎don't support FilterList,所以我认为你能得到的最好的就是为你的例子中的每个键调用上面的过程。