私はHBaseが初めてです。Scan と Filter を使用して HBase からデータをクエリする方法を教えてください (サンプル コード)。たくさん検索しました。しかし、混乱しました。助けてください。ありがとう。
2 に答える
その上で助けを見つけることはそれほど難しくありません。hbase フィルターの使用方法をグーグルで検索すると、多くの優れたリンクが確実に得られます。たとえば、これとこれを参照してください。
Filtersを使用した AFAが懸念されます。最初にScanオブジェクトを作成し、次にFilterインスタンスを作成し、このスキャン オブジェクトにフィルターを追加し、スキャンオブジェクトをパラメーターとして渡すHTableインスタンスを使用してgetScanner()を呼び出す必要があります。たとえば、ユーザーに関連するデータがあり、行キーが userID であるテーブルがあります。ここで、 userID がabcで始まるすべてのユーザーに関するすべての情報を取得したいと考えています。このようなシナリオでは、abcをパラメーターとして渡すことでPrefixFilterを利用できます。これにより、行キーがabcで始まるすべての行が返されます. このようなもの :
public static void main(String[] args) throws IOException {
Configuration conf = HBaseConfiguration.create();
HTable table = new HTable(conf, TABLE_NAME);
String userID = "abc";
//Get the data
Scan s = new Scan();
Filter filter = new PrefixFilter(Bytes.toBytes("abc"));
s.setFilter(filter);
ResultScanner rs = table.getScanner(s);
for(Result r : rs){
System.out.println("VALUE : " + Bytes.toString(r.getValue(Bytes.toBytes("cf"), Bytes.toBytes("c1"))));
}
rs.close();
table.close();
}
Result API は、getRow()、getColumn()など、必要に応じて使用できる多くのメソッドを提供します。詳細については、 APIを参照してください。また、 Lars GeorgeによるHBase The Definitive Guideのコピーを入手することをお勧めします。HBase について学ぶために必要なすべての情報が記載された素晴らしい本です。フィルタについては、第 4 章を参照してください。
HTH