2017-08-12 9 views
1

私は2つのHBaseテーブルを持っています.1つは1つのカラムファミリーを持ち、もう1つは4つのカラムファミリーを持っています。どちらのテーブルも同じ行キーでキーインされ、列ファミリにはそれぞれ値のjson文字列(各jsonペイロードのサイズは約10〜20Kです)を持つ単一の列修飾子があります。すべての列ファミリは、高速差分エンコーディングとgzip圧縮を使用します。HBase複数カラムファミリーのパフォーマンス

各テーブル約60MM行をロードした後、第二の表の任意の単一の列ファミリ上のスキャンテストは4倍に第一のテーブルから単一の列の家族をスキャンする時間がかかります。 2番目のテーブルのスキャンではaddFamilyを使用してスキャンを1列のファミリに限定し、両方のテストで1MMのローを正確にスキャンするので、ネットワークロード(したがってパフォーマンスの期待値)はどちらの場合も同じになるはずです。ただし、テストでは、2番目のテーブルと1番目のテーブルのいずれの列ファミリにも4倍の時間が表示されます。両方のテーブルで大きな圧縮を実行しても、パフォーマンスはあまり変化しませんでした。

HBaseのドキュメントや他のハイテクフォーラムは、テーブルごとに1つの以上の列ファミリを使用しないことをお勧めしますけれども、私がこれまで読んだことが何もスキャンのパフォーマンスが直線的列ファミリの数に基づいて劣化します示唆していません。他の誰かがこれを経験していますが、これについて簡単な説明がありますか?注意することは

、第二のテーブルが4列の家族を持っている理由は、私が今だけ一度に1人の列の家族をスキャンしていてもである、rowkeysのセット与えられたテーブルから複数の列の家族をスキャンするための要件が​​あります。パフォーマンスの問題に任意の洞察力のための

感謝。私はあなたの状況の権利を持っている場合、正常な動作です

答えて

0

。 各列ファミリはRegionServer上の別々のStoreを表すので、複数のストアにアクセスするのには時間がかかります。

スキャン対象を特定の列ファミリに限定するには、スキャン対象に addFamilyを使用します。

+0

たぶん私ははっきりとそれを述べなかったが、第二のテーブル上のテストでは、(あなたが言ったようにaddFamilyを使用して)のみ1人の列の家族をスキャンしました。たとえそうであっても、パフォーマンスは1番目のテーブルの単一列ファミリをスキャンする時間の4倍です。 – ps0618

関連する問題