2012-04-10 1 views
0

挿入が発生した後に値を再計算する簡単な方法はありますか?私は複数の列ファミリを持つテーブルを持っています。そのうちの1つは統計的です。元のレコードを挿入し、オフラインで値を計算するためのいくつかのHBase固有の機能を持っています。挿入をブロックすることはありません。Hbaseテーブルに挿入した後にいくつかの列を再計算する

いくつかのファイルをhbaseテーブルに置いて、そこに格納されている行数とそこに格納されている日付に関する情報を得たいとしましょう。

私はRegionObserverとそのpreGetメソッドを調べています。このソリューションは機能しますが、計算が完了するまで実際の挿入がブロックされるのは恐れられます。

答えて

1

postPutメソッドを使用します。あなたはhere

+0

これはかなり明らかですが、postPutを使用すると保存された値を更新できません。別の完全なPutコマンドを発行する必要がありますか、入ってくるPutオブジェクトで変更するだけで十分ですか? –

+0

postPut(名前が示すように:))は、putの後に発生します。何か別のものを書きたい場合は、新しいものが必要です。利点は、元の更新の遅延に影響しないことです。 hbaseはACIDデータベースではないことに注意してください。最終的な一貫性設定には、より適しています。 –

+0

これはわかりました。ここで例を見つけました:http://ueshin.github.com/hbase-coprocessors/apidocs/ index.html。副次的な質問として、コプロセッサをどのように便利にテストできますか?理想的には、単体テストになります。私はHBaseのテストを見てきました:src/test/java/org/apache/hadoop/hbase/coprocessor/TestRegionObserverStacking.java、これを行うには合理的な方法を示しますが、start()メソッドを実装すると、これがHBaseをもたらし、DFSは重い。 –

1

apacheの豚を試してみては、これはstasticl計算に最も適しているとあなたが訪問することができ、より詳細についてmapredモード

だけでなく、ローカルで実行することができますHBaseののコプロセッサへの簡単な紹介を見ることができます

http://pig.apache.com

+0

いいえ、これはオプションではありません。私はHBaseを使用する必要があります。 –

関連する問題