hbase テーブル内のすべての行キーを一覧表示するにはどうすればよいですか?
PHP と REST インターフェイスを使用してこれを行う必要があります。
HBase テーブルにすべてのキーをリストしている場合は、間違ったツールを使用しています。HBase は、すべてのキーをリストすることが実際的でない大規模なデータ システム用です。
より賢明な方法は、特定のキーから始めて、次の N 個のキーをリストすることです (N の値が 10K 未満の場合)。スキャンでこの種のことを行うための優れた Java インターフェースがあります。つまり、開始キーおよび/または終了キーを設定します。
ほとんどの HBase 機能は、Thrift インターフェースを介して公開されます。そこを見ることをお勧めします
RESTインターフェースがどのようなものかはわかりませんが、大きなRPC応答を回避するために、クライアント側で一部のデータをフィルターで除外することをお勧めします。これを行うには、サーバー側のフィルターをスキャンに追加します。
Scan s = new Scan();
FilterList fl = new FilterList();
// returns first instance of a row, then skip to next row
fl.addFilter(new FirstKeyOnlyFilter());
// only return the Key, don't return the value
fl.addFilter(new KeyOnlyFilter());
s.setFilter(fl);
HTable myTable;
ResultScanner rs = myTable.getScanner(s);
Result row = rs.next();
while (row != null) ...
http://svn.apache.org/repos/asf/hbase/branches/0.90/src/main/java/org/apache/hadoop/hbase/filter/
私は方法を見つけました..
http://localhost:8080/tablename/ * は xml データを返し、それを preg-match して行を取得できます。
より良い提案を求めて..
これ...
http://localhost:8080/tablename/*/columnfamily:columnid
...スキャナーで列フィルターを適用するのと同じように、テーブル内のその列に関連するテーブル内のすべての値を返します。
また、複数の列を探している場合は、コンマで区切ります。
それで: /tablename/*/columnfamily:columnid,columnfamily:columnid2