通过java编写的hadoop程序与通过hadoop-streaming(c++)在reduce阶段的区别:
对于前者,由map阶段输出的<k,v>会将相同的k哈希到结构<k,list v>,并用一个reduce处理。因此在reduce中,得理完这个<k,list v>就可以输出。
对于后者,map输出也是<k,v>结构,同样也会将相同的k哈希到一起,但是,不是<k,list v>结构,而仍然是<k,v>结构,相同的k会在一起,因此,reduce阶段读入的一条记录仍然是<k,v>,在处理完成相同的记录之后,输出到标准输出即可。
也常这样做,在reduce中,定义一个全局的类,用map来保留统计结果,在while循环读取记录的时候,改写这个map。通常还会设定一个计数器,当读取记录大于20w,且当前读取的记录不等于前一条,则可以说明当前记录和前一条记录属于不同的组,就可以输出了。
本文发布于:2024-01-30 06:18:26,感谢您对本站的认可!
本文链接:https://www.4u4v.net/it/170656670819831.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
留言与评论(共有 0 条评论) |