|
|
1
5
无论您是否使用流式处理,reducer都将始终并行运行(如果您没有看到这一点,请验证作业配置是否设置为允许多个reduce任务——请参阅集群或作业配置中的mapred.reduce.tasks)。不同之处在于,当您使用Java与流媒体时,框架会为您更好地打包。 对于Java,reduce任务获取一个迭代器,该迭代器覆盖特定键的所有值。这使得在reduce任务中对map输出求和时,很容易遍历这些值。在流式处理中,您实际上只是得到一个键值对流。你 是 保证值将按键排序,并且给定键的值不会在reduce任务中分割,但所需的任何状态跟踪都由您决定。例如,在Java中,映射输出以符号形式到达减速机 键1,{val1,val2,val3} 使用流媒体,您的输出看起来像 键1,val1 键1,键2 键1,val3 键2,键8 例如,要编写一个减缩器来计算每个键的值之和,需要一个变量来存储看到的最后一个键,并需要一个变量来存储值之和。每次读取新的键值对时,都要执行以下操作:
嗯。 |
|
|
2
1
我自己还没有尝试过Hadoop流媒体,但通过阅读文档,我认为您可以实现类似的并行行为。
尝试使用
|
|
|
user29759326 · 如何返回递归函数中的最后一个值? 1 年前 |
|
|
malife89 · 将java中的字符串读取为正确的日期格式 1 年前 |
|
|
Tim · 在java中,有没有更快的方法将字节数组写入文件? 1 年前 |
|
|
rudraraj · java中未声明最终变量 1 年前 |
|
|
Bala Ji · 以下BFS的实施效率如何? 1 年前 |