HBase からの情報のフェッチについて言及しているかどうかは完全にはわかりません。グラフ/視覚化を生成するために、HBase に格納されたデータに対する操作のような「合計」、「カウント」、「平均」などのデータ マイニングを行う集計アプリケーションを構築することを想定しています。
その場合、特定の答えは、分析しようとしているデータの性質によって異なります。そのようなアプリケーションの 1 つは、StumpleUpon のhttp://opentsdb.netです。
MapReduce を介して実現できるため、HBase でデータ サマライザーを作成するのは非常に簡単です。
http://hbase.apache.org/docs/r0.89.20100726/apidocs/org/apache/hadoop/hbase/mapred/package-summary.html
私たちの組織では、Solr を使用して財務レポートのクエリと集計機能を実行し、レンダリングのためにそれらを CMS に保存しています。したがって、同じデータセットのレンダリングをカスタマイズできます。HBase+Solr 上の CMS に保存することに興味がある場合は、以下が興味深いでしょう -
また、永続ストレージにアクセスするのと同じようにデータにアクセスしようとしており、ORM に関心がある場合は、次のような場合がありますが、それ以外の場合は無視してください。以下はからコピーされます - Java ORM for Hbase私による別の答え。
HBase の強みは、動的な列を静的な列ファミリーに保持することです。HBase を使用してアプリケーションを開発した経験から、セルの修飾子と値を決定するのは SQL ほど簡単ではないことがわかりました。
たとえば、アクセス パターン、著者の編集、アプリ レイヤー キャッシュの実装に応じて、著者と同じ数の本を本テーブルに保存することを選択する場合があります (つまり、著者は 2 つのテーブル、著者テーブル、および本テーブルに存在します)。 ) または著者 ID のみ。さらに、著者のコレクションを XML/JSON として 1 つのセルに保存することも、個々の著者の個別のセルに保存することもできます。
このことを理解した上で、Hibernate などの本格的な ORM を作成することは非常に難しいだけでなく、実際には決定的ではない可能性があると結論付けました。そこで私は、iBatis が Hibernate を行うのと同じように、別のアプローチを取りました。
それがどのように機能するかを説明してみましょう。このために、こことここのソース コードを使用します。
- 最初の最も重要なタスクは、ObjectRowConverter インターフェイス (この場合は SessionDataObjectConverter) を実装することです。抽象クラスは、HBase コミュニティで議論され、学んだ基本的なベスト プラクティスをカプセル化します。この拡張機能により、基本的に、オブジェクトを HBase 行に、またはその逆に変換する方法を 100% 制御できます。API からのこの唯一の制限は、ドメイン オブジェクトがインターフェース PersistentDTO を実装する必要があることです。これは、Put、Delete、do byte[] を id オブジェクトに、またはその逆を作成するために内部的に使用されます。
- 次のタスクは、HBaseImplModule で行ったように依存関係を接続することです。依存関係の注入を行いますので、興味があればお知らせください。
以上です。それらの使用方法については、こちらをご覧ください。基本的に、CommonReadDao、CommonWriteDao を使用して、HBase との間でデータを読み書きします。共通の read dao は、マルチスレッドの行からオブジェクトへの変換をクエリで実装し、マルチスレッドの ID による取得、ID による取得を実装し、Hibernate Criteria のような API を使用して Scan 経由で HBase にクエリを実行します (集計関数は使用できません)。Common write dao は、楽観的/悲観的ロック、セル オーバーライド/マージ チェック エンティティ (非) 保存、更新、削除などの存在を確認するなど、いくつかの追加機能を備えた一般的な書き込み関連コードを実装します。
この ORM は内部目的のために開発されたものであり、私は首をかしげていたため、まだいくつかのドキュメントを作成できません。しかし、もし興味があれば、私に知らせてください。