2016-07-20 11 views
3

だから私はBigtableの中に次のデータがある場合:私は言うSFO *レコードを照会するにはどうすればよいGoogleクラウドBigtableのクエリ部分キー

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

を?私はドキュメンテーションを読んだ。私は単列を得る方法を知っています。これと類似したもの:

table.get("SFO_8686"); 

または範囲を取得する方法。 getRows("SFO_8686", "SFO _8687")のようなものでstartKeyendKeyがありますが、私はその文書を読み、プレフィックスで始まるレコードを得ることができると信じていました。 SFO *の例それ、どうやったら出来るの?

答えて

2

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

+0

ドキュメントでは、特にSFO *の種類の操作でクエリを実行できると書かれています。キーが複数のデータポイントで構成されている場合、問合せ時にはキーの一部分の値、SFO部分のみを認識し、開始と終了をどのように構成するのですか? – Amit

+0

わかりやすいように、どのドキュメントを参照していますか? –

+1

ああ、 "SFO_"ははっきりとした始まりですが、最終的なキーはどうあるべきかはっきりしていませんか? バイト[] bytes = "SFO _"。getBytes(); バイト[bytes.length-1] =(バイト)(bytes [bytes.length-1] + 1); わかりません。 –

3

私の経験では、PrefixFilterは部分的な行キー*スタイルのスキャンと、私が管理していたものから、パフォーマンスを向上させるはずです(おそらくフルスキャンを避けることによって) :また

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

、私はこの議論から理解して何から:

scan 'TableName', {ROWPREFIXFILTER => 'SFO'} 
HBase (Easy): How to Perform Range Prefix Scan in hbase shell 、シェル環境では、 'ROWPREFIXFILTER' は上記の2つの要素を組み合わせることを意味しています

しかし、それはあなたが後になっている場合は、それのJava同等のを見つけるために管理していない。他の人がいるなら聞くのに役立つでしょう!

関連する問題