11

データを含む HBase テーブルが8Gあります。

そのテーブルで部分キースキャンを使用して特定のキーの値を取得すると、ほぼ一定の時間で値が取得されます。

を使用するGetと、スキャンよりもはるかに時間がかかります。しかし、コードの中を見ると、Getそれ自体がScan.

この時差を説明できる人はいますか?

4

2 に答える 2

5

Get を発行すると、舞台裏でスキャンが行われます。Cloudera のブログ投稿では、「get または scan が発行されるたびに、HBase は各ファイルをスキャン (原文のまま) して結果を見つけます」と確認しています。

あなたの結果を確認することはできませんが、手がかりはあなたの「部分キースキャン」にあるのではないかと思います。部分キー スキャンと get を比較する場合、Get に使用する行キーは、スキャンに使用する部分キーよりもはるかに長い文字列になる可能性があることに注意してください。

その場合、Get の場合、HBase は決定論的なルックアップを実行して、照合してフェッチする必要がある行キーの正確な場所を確認する必要があります。しかし、部分的なキーを使用すると、HBase は正確なキーの一致を検索する必要がなく、そのキー プレフィックスのおおよその場所を見つけるだけで済みます。

これに対する答えは次のとおりです。私はそれが依存すると思います:

  1. 行キーの「スキーマ」または構成
  2. Get キーと Scan プレフィックスの長さ
  3. いくつの地域がありますか

そしておそらく他の要因。

于 2013-01-28T23:01:36.507 に答える