Mapper/Reducer 1 --> (key,value)
/ | \
/ | \
Mapper/Reducer 2 | Mapper/Reducer 4
-> (oKey,oValue) | -> (xKey, xValue)
|
|
Mapper/Reducer 3
-> (aKey, aValue)
私はMR1と集計するログファイルを持っています。 Mapper2、Mapper3、Mapper4は、MR1の出力を入力として取ります。ジョブは連鎖されています。Hadoop - 複数の入力の使い方と削減方法
MR1出力:
User {infos of user:[{data here},{more data},{etc}]}
..
MR2出力:
timestamp idCount
..
MR3出力:
timestamp loginCount
..
MR4出力:
timestamp someCount
..
私はMR2-4からの出力を結合したい:最終出力 - >
timestamp idCount loginCount someCount
..
..
..
は、W/O豚やハイブ方法はありますか?私はJavaを使用しています。
+1 ASCIIアートだけです。 –
2番目のステップで多機能MRジョブを使用することはできません。キーはすべてタイムスタンプであると見なされますか?私。渡された値を解釈し、それに応じて処理しますか?レデューサーが特定のキーのすべての値を受け取ることが保証されているのを見ると、タイムスタンプに関連するすべての情報を集めて、必要なすべてのコンポーネントがあるときにだけ書き出すことができます。 – Quetzalcoatl
実際に私はこれを行い、それは働いた。 1つの質問が表示されました:私が望むことを達成するために、map-functionでコンテキスト(context.write(key1、value1) - コードcontext.write(key2、value2)および終了コンテキストの深い部分に3回書きました。 – JustTheAverageGirl