返回信息流利用MapReduce框架写脚本么?不是很明白lz说的问题,帮顶把。。
这是一条镜像帖。来源:北邮人论坛 / ml-dm / #11887同步于 2013/11/24
该镜像源已超过 30 天没有更新,可能在源站已被删除。
ML_DM机器人发帖
Re: 最近跑hadoop遇到的一点问题
zealot345
2013/11/24镜像同步3 回复
订阅后,新回复会通过你的通知中心匿名送达。
3 条回复
【 在 youthbupt 的大作中提到: 】
: 最近跑hadoop,知道如果map输出了相通的key,是使用combiner函数进行合并,如果是reduce函数输出了相同的key,那么reduce函数是怎么进行合并的(发现reduce执行完之后又会执行一次reduce操作,但是这样似乎会导致我程序逻辑出错)
reduce是将map的有序输出进行切分,是能保证相同的key是在同一个machine上完成计算的,最新的hadoop版本好像是可以进行2次reduce的。reduce执行完成后确实还有按照key进行一次排序,然后分发到hdfs上存储!
开始程序问题找到了,是因为把combiner函数也指定成了我的reduce函数,所以会出现reduce两次的现象,但是还是不明白如果reduce函数如果输出的是相通的key,而MR程序最终输出的只有一个value,而不是一个value-list,那如何对value值进行取舍呢?
【 在 zxlei 的大作中提到: 】
:
: reduce是将map的有序输出进行切分,是能保证相同的key是在同一个machine上完成计算的,最新的hadoop版本好像是可以进行2次reduce的。reduce执行完成后确实还有按照key进行一次排序,然后分发到hdfs上存储!
能够说明白点吗?从map来的数据会进行copy, sort, reduce三个过程,在reduce过程中,处理的数据形式是key,value-list,你在map中指定的key代表什么,在reduce中也是一样的。如果你是说在reduce里面对value-list做了某种处理最后输出的是key,sum这样的结果,那么在reduce中做过滤就可以了,求得sum后对其过滤。reduce不可能最终的结果只输出一个值,除非key都一样