2

約15万行のHBASEテーブルがあり、それぞれに3700列が含まれています。

一度に複数の行を選択し、次のように結果を集計する必要があります。

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

スキャナーを使用して実行できる問題は、スキャナーがカーソルのようなものであり、同時に複数のマシンに分散された作業を実行するのではなく、ある領域からデータを取得してから別の領域にホッピングすることです。次のデータセットを取得するためのリージョンなど、結果が複数のリージョンにまたがる場合。

分散してスキャンする方法(オプション、または各地域のデータに対応する複数のスキャナーを作成する方法[これはそれ自体がワームの缶である可能性があります])はありますか、それともマップ/リデュースジョブで実行する必要があるものですか? 。M / Rジョブの場合、リアルタイムクエリに十分な「高速」でしょうか。そうでない場合は、NOSQLタイプのデータベースを使用してこれらのタイプの集計をリアルタイムで実行するための優れた代替手段はありますか?

4

1 に答える 1

2

そのような場合に私がすることは、集計の要約を示す別のテーブルを用意することです。つまり、行 [m] が (列 1) (テーブル 2 の行キー) に対してテーブル 2 のテーブル 1 に挿入されると、平均、標準偏差、最大、最小など、その合計またはその他の集計結果を保存します。等

もう 1 つの方法は、Lucene、Solr、Elastic Search などの検索ツールにインデックスを付け、そこで集約検索を実行することです。Solrの例をいくつか示します。

最後に、複数のリージョンまたは M/R ジョブにまたがるスキャンは、リアルタイム クエリ用に設計されていません (そのように設計されたクラスター、つまりデータ要件に対して過大なサイズでない限り)。

それが役に立てば幸い。

于 2011-01-07T06:28:31.677 に答える