2

いくつかの既知の行キーに対して Happybase でクエリを実行しrows、フィルターに一致する行のみが返されるように値フィルターを追加したいと考えています。

HBase シェルでは、次のように get コマンドにフィルターを指定できます。

get 'meta', 'someuser', {FILTER => "SingleColumnValueFilter ('cf','gender',=,'regexstring:^male$')"}

Happybase では、コマンドにフィルターを追加できますが、クエリscanにオプションが表示されません。rowsこれがどのように機能するかを次に示しますscan

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

rowsHappybase (またはその他の 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

ただし、happyhbaseHbase Thrift サービスを使用すると、 FilterListがサポートされていないように見えるため、例の各キーに対して上記の手順を呼び出すのが最善だと思います。

于 2016-08-29T10:30:15.910 に答える