2016-09-09 16 views
1

HBaseコプロセッサの行更新を検出するにはどうすればよいですか?HBaseコプロセッサの行更新検出

私はRegionObserverのpostPut()関数でそれを調べようとしていますが、値が変更されていなくてもすべてのput要求で呼び出されます。

これは一連の操作であると仮定します

  1. プット 'TESTTABLE'、 'ROW2'、 'C​​F:F1'、 'val1と'

  2. プット 'TESTTABLE'、 'ROW2'、 'CF:F1'、 'val1と'

  3. プット 'TESTTABLE'、 'ROW2'、 'C​​F:F1'、 'val2の'

だから、私は、操作1と3は、すなわち発生したときに検出したいですfiの行が追加されたとき値が変更された最初の時刻。同じ値が再度プッシュされたときではありません。

postPut()関数の中に古い値のセルを取得できるような方法はありますか?それを新しい価値と比較する。

答えて

1

私はコプロセッサ領域のレコードをあらかじめ入力して調べます。レコードが新しい場合は、ブルームフィルタが99%の時間で正しいため、物理I/Oは実行しないでください。

Splice Machine(オープンソース)では、スキャンで同期を取り戻すためにBloomフィルタに直接アクセスするいくつかの最適化があります。あなたのgithubサイトhttps://github.com/splicemachine/spliceengineをチェックアウトし、このクラスとメソッドHRegionUtil.keyExists()を検索することができます。

幸運。

+0

しかし、prePut()で実行すると、これらのアップデートが検出された後に重い作業をしているので、HBaseのパフォーマンスが低下します。 – restap

関連する問題