2

我想rows用 Happybase 对一些已知的行键执行查询并添加一个值过滤器,以便只返回与过滤器匹配的行。

在 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$')")

有没有办法rows使用 Happybase(或任何其他 Python HBase 客户端库)执行过滤查询(对于可能随机排序的行键)?

我想象它看起来像这样(但没有过滤器参数):

rows = tab.rows(rows=['h_key', 'a_key', 'z_key'], filter="SingleColumnValueFilter('cf','gender',=,'regexstring:^male$')")
4

1 回答 1

0

Get with filter 等于 Scan with start/stop row。

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

在 Java 中,a和r 的FilterList组合将完全满足您的需求,并且有一个关于此的示例MultiRowRangeFilterSingleColumnValueFilte

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

于 2016-08-29T10:30:15.910 回答