5

したがって、Bigtable に次のデータがあるとします。

DEL_6878 .....
DEL_6879 .....
BOM_5876 .....
SFO_8686 .....
SFO_8687 .....

SFO* レコードなどを照会するにはどうすればよいですか? ドキュメントを読みました。単一の行を取得する方法を知っています。これに似たもの:

table.get("SFO_8686");

または、範囲を取得する方法。getRows("SFO_8686", "SFO _8687")which はstartKeyandを取り込むようなものですendKeyが、ドキュメントを読んで、プレフィックスで始まるレコードを取得できると信じ込まされました。SFO* の例。それ、どうやったら出来るの?

4

2 に答える 2

3

範囲を指定して Scan を実行するのが最も効率的なオプションだと思います。でスキャンを使用することもできorg.apache.hadoop.hbase.filter.RowFilterますRegexStringComparator

于 2016-07-20T14:26:47.863 に答える
3

私の経験では、 PrefixFilter は部分的な行キー * スタイルのスキャンでうまく機能し、掘り出したものから、それに加えて開始行と終了行を設定すると、パフォーマンスが向上するはずです (おそらくフルスキャンを回避することによって):

PrefixFilter px = new PrefixFilter(Bytes.toBytes(rowKey));
Scan s = new Scan();
s.setStartRow(Bytes.toBytes(rowKey));
s.setFilter(px);
...

また、この議論から私が理解していることから: HBase (Easy): How to Perform Range Prefix Scan in hbase shell はシェル環境にあり、「ROWPREFIXFILTER」は上記の 2 つの要素を結合することを意味します。

scan 'TableName', {ROWPREFIXFILTER => 'SFO'}

しかし、それがあなたの求めているものである場合、私はそれと同等のJavaを見つけることができませんでした。他の人が持っているかどうかを聞くのに役立ちます!

于 2016-12-17T22:29:30.073 に答える