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。
单独为ASCII艺术+1。 – 2013-04-11 11:58:50
第二步是不可能有一个多功能的MR作业,看到你的关键是所有的时间戳?即解释已经传入的值并相应地处理它?看到reducer保证接收给定密钥的所有值,您可以收集与时间戳相关的所有信息,并只在您拥有所需的所有组件时才写出。 – Quetzalcoatl 2013-04-11 12:01:56
其实我这样做,它的工作。弹出一个问题:为了实现我想要的功能,我在映射函数中向context(context.write(key1,value1))写了3次 - 在代码context.write(key2,value2)和结尾上下文中更深入。写(key3,value3)。这是可行的吗? – JustTheAverageGirl 2013-04-11 13:12:43