2017-04-20 13 views
1

複数の行に格納された値に対して集計操作を実行できるかどうかを知りたかったのです。例えば、私は私がやろうとしていますどのような次の表Accumuloのイテレータとコンバイナを使用して複数行の値を集計する

rowID colFam colQual value 
00000 0000  A   12 
00000 0001  B   Test 
00001 0000  A   35 
00001 0001  B   Foo 
00002 0000  A   7 
00002 0001  B   Bar 

を持って見つけているcolumnQualifier Aで格納されているすべての値の平均値はAccumuloのイテレータ、フィルタまたはコンバイナを使用して、それは可能ですか?

私はStatsCombinerを見ましたが、そのコンバイナは異なるキー自体で集計を実行するのではなく、同じバージョンの異なるバージョン(rowID、colFam、colQualは同じですがタイムスタンプが異なります)で集約を実行します。

答えて

1

Combiners(およびその前身、アグリゲータ)は、同じキーの集約を行います。複数のキーを1つのキーに変換するイテレータを作成することもできますが、各タブレットに対して一連の部分計算が行われるため、クライアントに集約する必要があります。

Apache Fluoの「オブザーバー」を使用して、テーブルを摂取している間に統計情報を集約することができます。

おそらく複数の解決策があります。私はApache Fluoを見てみることをお勧めします。実際に使用したくない場合は、各タブレットのイテレータとして部分和/集計を集計し、クライアント側で最終集計を行うことを検討してください。

0

私は、これまで数年でAccumuloを使用していなかったという事実を前に説明しておきますが、サーバー側で完全に行うことはできません。その理由は、あなたがアキュムロクラスターのすべてのノードのまわりに広がることになるCQの値を探しているからです。私。約00000:0000を知っているタブレットサーバーは、00002:0000などの値については何も知っていません(保証されています)。おそらく、この機能を提供するためにデータの2番目のインデックスを作成する必要がありますCQのRowID)、またはクライアント側でアグリゲーションを実行する必要があります。タブレットごとにいくつかのaggを実行し、クライアント側で残りのaggを実行するハイブリッドなアプローチを行うことができます。

関連する問題