2

hbase テーブル内のすべての行キーを一覧表示するにはどうすればよいですか?

PHP と REST インターフェイスを使用してこれを行う必要があります。

4

4 に答える 4

5

HBase テーブルにすべてのキーをリストしている場合は、間違ったツールを使用しています。HBase は、すべてのキーをリストすることが実際的でない大規模なデータ システム用です。

より賢明な方法は、特定のキーから始めて、次の N 個のキーをリストすることです (N の値が 10K 未満の場合)。スキャンでこの種のことを行うための優れた Java インターフェースがあります。つまり、開始キーおよび/または終了キーを設定します。

ほとんどの HBase 機能は、Thrift インターフェースを介して公開されます。そこを見ることをお勧めします

于 2011-03-09T16:17:17.183 に答える
4

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/

于 2011-03-16T22:33:21.963 に答える
4

私は方法を見つけました..

http://localhost:8080/tablename/ * は xml データを返し、それを preg-match して行を取得できます。

より良い提案を求めて..

于 2011-03-09T06:55:14.617 に答える
3

これ...

http://localhost:8080/tablename/*/columnfamily:columnid 

...スキャナーで列フィルターを適用するのと同じように、テーブル内のその列に関連するテーブル内のすべての値を返します。

また、複数の列を探している場合は、コンマで区切ります。

それで: /tablename/*/columnfamily:columnid,columnfamily:columnid2

于 2011-11-26T01:58:27.987 に答える