2

ここに私の質問があります:

1) すべてのデータを行キーだけに入れようとしましたか? 私は非常に小さな行 (しかし数百万行) のデータを持っており、より多くのデータ エンティティを組み合わせてキーを一意にする必要があるため、HBase に格納する必要があるすべてのものを使用して複合キーを作成するという考えでした。試してみましたが、ボトルネック/問題は何だと思いますか? 何を考慮すべきですか?ブルーム フィルターに入れるものが増えるので、これにはより多くの RAM が必要になると想像できます。

2) このフォームで見つけられなかったので、確認したいだけです。私が複合キーを持っている場合、HBaseを取得する限り、次のように言いましょう:キー:k1_k2_x

範囲スキャンを実行して、特定の k1 のすべての k2 エントリを取得できます。例: scan "t1",{STARTROW="k1_"}

ただし、ワイルドカードを使用して特定の k2 のすべての k1 エントリを取得する方法はありません。これには map/reduce ジョブ、Hive、またはフィルターが必要ですよね?

4

1 に答える 1

1

1)すべてのデータを行キーに入れることはまったく問題ありません。HBase は、このようなユース ケースをサポートするように設計されています。

2) k1 と k2 の両方で範囲スキャン (または「ワイルドカード スキャン」) を実行する場合は、次のように 2 つのテーブルにデータを格納することをお勧めします。

  • テーブル 1: k1_k2_x
  • テーブル 2: k2_k1_x

これは重複データですが、必要な種類のクエリを実行するのに非常に効率的です。

これは HBase のトレードオフの 1 つです。非常に大きなスケーリング機能が得られますが、RDBMS 機能が失われ、行キー構造を介して挿入/クエリを実行する効率的な方法を考え出す必要があります。

于 2012-10-18T19:32:23.573 に答える