2016-08-26 223 views
1

我想对Happybase执行一个rows查询以获得一些已知的行键并添加值筛选器,以便只返回与筛选器匹配的行。Happybase使用行筛选函数

在HBase的外壳可以提供一个过滤器,以获取命令,就像这样:

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

获取与过滤器等于与开始扫描/停排。

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,所以我认为你可以得到的最好的是在你的例子中为每个键调用上述过程。

+0

在思考中,我留下了一些我的问题,我会编辑它。我想要执行的查询是对随机排序的一组行键的“行”查询。由于订单未知,因此我无法使用行密钥范围。 – dsimmie

+0

@dsimmie更新答案,我不认为有当前'''happybase'''版本的完美解决方案。 –