私は最初にHBaseテーブルをスキャンするmapreduceプログラムを持っています。HBaseマップ出力をhdfs&HBASeに出力
私は、いくつかのレデューサー出力をhdfsに行き、いくつかのレデューサー出力をhbaseテーブルに書きたいと思っています。レデューサーは、このように2つの異なる場所/形式に出力するように設定できますか?
私は最初にHBaseテーブルをスキャンするmapreduceプログラムを持っています。HBaseマップ出力をhdfs&HBASeに出力
私は、いくつかのレデューサー出力をhdfsに行き、いくつかのレデューサー出力をhbaseテーブルに書きたいと思っています。レデューサーは、このように2つの異なる場所/形式に出力するように設定できますか?
還元剤は、MulitpleOutputs
classを使用して複数のファイルを出力するように設定できます。このクラスの先頭にあるドキュメントは、複数のファイルに書き込むための明確な例を示しています。しかし、HBaseへの書き込み用にOutputformatが組み込まれていないので、HDFSの特定の場所に2番目のストリームを書き込んだり、HBaseに別のジョブを挿入したりすることも考えられます。
コードをあまり書きたくない場合は、マッパーまたはレデューサーのセットアップメソッドでテーブルを開き、hbaseテーブルにputステートメントを実行するだけです。一方、出力ファイルがhdfsファイルであるようにジョブを記述します。こうすることで、hbaseとhdfsの両方に書き込むことができます。
さらに詳しく説明すると、context.write()を実行すると、hdfsファイルに書き込む一方、putを実行するとtable.putが実行されます。
また、クリーンアップ()メソッドでテーブルなどを閉じることを忘れないでください。唯一の背景は、テーブル接続が1000回開かれるとしますが、任意のポイントでマッパーの最大数が実際に実行されるため、設定に応じて50になる可能性があります。少なくとも私のために働く!
私は複数の出力が仕事を行うことができます。.. CHKが http://hadoop.apache.org/mapreduce/docs/r0.21.0/api/org/apache/hadoop/mapreduce/lib/output/MultipleOutputs.html
をTISと思います