分享

hadoop中partitioner后处理多个reduce输出结果

gyunling 发表于 2013-10-16 13:39:21 [显示全部楼层] 回帖奖励 阅读模式 关闭右栏 7 8746
我写了个倒排索引的小demo,经过两个mapreduce串联处理后生成4个输出文件,每个文件确实达到了预期结果,但期望结果是4个文件合起来并且已按单词排好序的结果。查看发现4个文件为4个reduce的处理结果,开始以为mpared框架会将各reduce的结果合并为一个结果输出,结果不是,是否我们需要自己完成对各个reduce任务的结果进行处理?如果是的话如果reduce多的话岂不是很麻烦?有什么好的解决办法?
              
               
               

已有(7)人评论

跳转到指定楼层
xu101q 发表于 2013-10-16 13:40:08

            输出的文件数,取决于reduce的 个数, reduce的个数 不是越多越好 ! 而且reduce  的个数是可以控制, 具体多少应该根据集群环境,以及输入的split的数量整合考虑。
job.setNumReduceTasks(int num)
        
回复

使用道具 举报

gyunling 发表于 2013-10-16 13:41:03

            那reduce的个数根据集群环境和split数量考虑,设置reduce数量和split数量及集群中节点数量的关系是什么,有什么设置原则或计算公式吗?对于ruduce数量大于1的情况,每个reduce所得到的文件如何合并为一个有序文件?貌似框架不是不做合并reduce输出工作的```
        
回复

使用道具 举报

zhangkai08111 发表于 2013-10-16 13:41:33

            引用 2 楼 gyunling 的回复:那reduce的个数根据集群环境和split数量考虑,设置reduce数量和split数量及集群中节点数量的关系是什么,有什么设置原则或计算公式吗?对于ruduce数量大于1的情况,每个reduce所得到的文件如何合并为一个有序文件?貌似框架不是不做合并reduce输出工作的```
有多少reudce就有多少文件生成,排序也是对一个key的某个或某些属性排序,有必要合并到一个文件中么
        
回复

使用道具 举报

yunshuixiliu 发表于 2013-10-16 13:42:26

            楼主是怎么输出到多个文件里面的?我的只能输出到一个文件里面?
        
回复

使用道具 举报

ljmdbc7a 发表于 2013-10-16 13:43:14

            引用 4 楼 yunshuixiliu 的回复:楼主是怎么输出到多个文件里面的?我的只能输出到一个文件里面?
我也是这种情况,10个reduce,但结果只输出到了一个文件中,其他9个为空?楼主解决了吗?
        
回复

使用道具 举报

FeiNiBuKeZyh 发表于 2013-10-16 13:43:46

            REDUCE 输出文件 是一对多的关系,多个Reduce不可以同时操作一个文件,如果多个Reduce操作一个文件,那样一个Reduce只会把令一个reduce结果覆盖掉。或是提示文件已经存在。
        
回复

使用道具 举报

appledx520 发表于 2013-10-16 13:44:20

            我是通过hive提供的JDBC接口将图片数据存入hive表,数据能存进去,我想问下图片怎么取出来呢?我在hive中select,出来的全是乱码。你有空帮我想想可以么,很急!!!!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

推荐上一条 /2 下一条