2010-12-29 4 views
2

私は、それぞれが3700列を含む約150k行のHBASEテーブルを持っています。HBASEデータからアグリゲーションを返す

Iは一度に複数の行を選択し、バック結果を集計、何かする必要が

:[N] [1]〜[カラム1] + [2] [カラム1] ... +行を行

行[列1]
行[1] [列2] +行[2] [列2]
...
行[1] [列n] +行[2] [columnn] ... + row [n] [columnn]

私はスキャナを使うことができますが、スキャナはカーソルのようなもので、複数の同時にマシンを稼働させるのではなく、ある領域からのデータ、次に別の領域へのホッピング、次のデータセットの取得などがあり、結果は複数の領域にまたがります。

分散した方法でスキャンする方法(オプション、または各地域のデータに複数のスキャナを作成する方法[これはワームの可能性があります])、またはマップ/ジョブを減らす。それがM/Rの仕事であれば、それはリアルタイムクエリーにとって十分速いでしょうか?もしそうでなければ、NOSQL型のデータベースを使ってリアルタイムでこれらのタイプの集計を行うのに良い選択肢がいくつかありますか?

答えて

2

私がこのような場合に行うことは、集計サマリーを持つ別のテーブルを用意することです。つまり、row [m]がテーブル2のテーブル1に(カラム1)(テーブル2のローキー)に挿入されたとき、その平均値や標準偏差、最大値、最小値などの集計結果を保存します

もう1つのアプローチは、Lucene、Solr、Elastic Searchなどの検索ツールに索引付けし、そこで集約検索を実行することです。 Solrにいくつかの例があります。

最後に、複数領域またはM/Rジョブにまたがるスキャンは、リアルタイムクエリに対して設計されていません(このような方法で設計されたクラスタ、つまりデータ要件を超えていない場合)。

希望します。

関連する問題