2

私の場合、クエリのinitセットの行キーを定義しました。行キーに対してクエリを実行し、列ファミリーと列はそのままにします。

例えば。行キーは次のようなものです。

%userid%_%timestamp%

私たちは次のようないくつかのクエリを実行しています

select columnFamily{A,B,C} from userid=blabla and blabla < timestamp < blabla 

hbaseが構築されているため、パフォーマンスはかなり良好です-行キールックアップ。

ただし、新しい要件が構築されるため、より多くのフィールド(列)に対してクエリを実行する必要があります。お気に入り:

select * from userid=blabla and blabla < timestamp < blabla and A=blabla and B=blabla and c=blabla

hbaseフィルターの使用を開始しました。列の1つでEqualFilterを試しました-A、機能の観点からは問題なく動作します。

私たちが持っている行キーを考えると、私はここで一般的な懸念を持っています、

  1. さまざまなクエリのニーズを満たすために、すべての列A、B、Cに対してフィルターを追加し続けることができますか?hbaseクエリに追加されたフィルターの数は、読み取りパフォーマンスを低下させますか?
  2. あるとしたら、その影響はどれほど劇的ですか?
  3. パフォーマンスの観点から、最高のhbaseフィルターをどのように使用すべきかを誰かに説明してもらえますか?
4

2 に答える 2

3

1)さまざまなクエリのニーズを満たすために、すべての列A、B、Cに対してフィルターを追加し続けることができますか?hbase
クエリに追加されたフィルターの数は、読み取りパフォーマンスを低下させますか?

はい、これを行うことができます。データセットのサイズと使用しているフィルターによっては、パフォーマンスに影響します。

2)ある場合、その影響はどのくらい劇的ですか?

返すデータが少ないほど良いです。不要なデータを取得したくありません。フィルタは、必要なデータのみを返すのに役立ちます。

3)パフォーマンスの観点から最高のhbaseフィルターを使用する方法を誰かに説明してもらえますか?

プレフィックスフィルター、特定の値(または修飾子、列など)に完全に一致するフィルターなどのフィルターを使用するか、データに対して大なり/小なりの型の比較を行うのが最適です。これらのタイプのフィルターは、適切な結果を返すために各行またはテーブルのすべてのデータを調べる必要はありません。正規表現は、フィルターが参照しているすべてのデータに対して実行する必要があり、大規模なデータセットに負担をかける可能性があるため、正規表現フィルターは避けてください。

また、HBaseの本の著者であるLars Georgeは、人々はフィルターよりもコプロセッサーに向かっていると述べています。コプロセッサーも調べたいと思うかもしれません。

于 2012-09-06T20:01:08.043 に答える
1

1)さまざまなクエリのニーズを満たすために、すべての列A、B、Cに対してフィルターを追加し続けることができますか?HBaseクエリに追加されたフィルターの数は、読み取りパフォーマンスを低下させますか?-はい、すべての列にフィルターを追加できますが、大量のデータが保存されている場合は、クエリのパフォーマンスに確実に影響します。列フィルターを追加するときはいつでも、最終的には列に基づく比較の数が増えるため、列フィルターは避けてください。

2)ある場合、その影響はどのくらい劇的ですか?-Filterを使用すると、結果セットを取得できるため、フェッチ中にのみ必要なデータが得られます。

3)パフォーマンスの観点から最高のhbaseフィルターを使用する方法を誰かに説明してもらえますか?-HBaseでは、rowFilter(プレフィックスが含まれます)は、すべてのレコードを検索する必要がないため、最も効率的なフィルターです。頻繁にクエリを実行する必要のあるコンポーネントが含まれるため、rowkeyを作成してください。-値フィルターは、列の値を比較する必要があるため、最も非効率的なフィルターです。-HBaseフィルターでは、フィルターの順序が重要です。フィルターリストに追加するフィルターが複数ある場合は、追加したフィルターの順序がパフォーマンスに影響します。クエリに3つの異なるフィルターを追加する必要がある場合は、例を挙げて説明します。最初のフィルターを適用すると、次のフィルターには、3番目のフィルターと同じようにクエリを実行する小さなデータが含まれます。

したがって、最初に効率的なフィルター、つまり行キー関連のフィルターを追加し、その後に他のフィルターを追加してみてください

于 2017-05-02T05:41:09.290 に答える