5

HBase が RowKey スキャンでワイルドカードをサポートしているかどうか疑問に思っていました。次のようなもの:

select * from TABLE where KEY like '%SEARCH_KEY%';

行キーのプレフィックスについてある程度の知識があれば、部分キー スキャンを使用できることは理解しています (HBase はそのスキャンで非常に効率的です)。ただし、情報をプレフィックスとして付けていない場合 (検索キーが RowKey のどこにでもある可能性があることを意味します)、Hbase は完全なテーブル スキャンを実行する必要がありますよね?

また、HBase で (コードまたはシェルを介して) そのようなクエリを作成するにはどうすればよいですか?

4

2 に答える 2

1

RegexStringComparator を RowFilter と共に使用して正規表現を指定できますが、最終的には完全なテーブル スキャンになります。

RegexStringComparator comp = new RegexStringComparator("my.");   // any value that starts with 'my'
SingleColumnValueFilter filter = new SingleColumnValueFilter(
cf,
column,
CompareOp.EQUAL,
comp
);
scan.setFilter(filter);

SingleColumnValueFilter の代わりに RowFilter を使用します

于 2014-01-23T11:24:51.007 に答える