使用行功能的Happybase过滤

时间:2016-08-26 14:56:46

标签: python hbase happybase

我想用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$')")

1 个答案:

答案 0 :(得分:0)

获取过滤器等于使用开始/停止行扫描。

rows = tab.scan(filter="SingleColumnValueFilter('cf','gender',=,'regexstring:^male$')",
                     row_start="someuser", row_stop="someuser")

在Java中,FilterList合并MultiRowRangeFilterSingleColumnValueFilte r将完全满足您的需求,并且有一个example

但是,由于happyhbase使用Hbase Thrift服务,似乎don't support FilterList,所以我认为你能得到的最好的就是为你的例子中的每个键调用上面的过程。