使用行函数的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$')")

Get with filter等于Scan with start/stop row

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

在Java中,一个FilterList结合了MultiRowRangeFilterSingleColumnValueFilter就可以很好的满足你的需求,这里有一个例子。

然而,由于happyhbase使用的是Hbase的Thrift服务,似乎不支持FilterList,所以我认为你能得到的最好的方法是在你的例子中为每个键调用上面的过程。

最新更新