分享

奢望Reduce处理结果放入对象中

xukunddp 发表于 2013-10-16 13:41:08 [显示全部楼层] 回帖奖励 阅读模式 关闭右栏 3 4154
我的map和reduce代码:
public static class MyMapper extends TableMapper{
               
                private final IntWritable one = new IntWritable(1);
               
                @Override
                public void map(ImmutableBytesWritable row, Result value, Context context)
                throws IOException,InterruptedException{
                        for(KeyValue kv : value.list()){
                                context.write(new Text(kv.getKey()), one);
                        }
                }
        }
       
        public static class MyReducer extends Reducer  {
        
                private static Map countMap = new HashMap();
               
                public void reduce(Text key, Iterable[I] values, Context context) throws IOException, InterruptedException {
                        int i = 0;
                        for (IntWritable val : values) {
                                i += val.get();
                        }       
                        countMap.put(key.toString(),i);
               
                }
               
        }
我曾经设想要是把reduce的结果放入对象countMap就好了,不用回写到HDFS,而直接put到一个countMap返回给调用者。但认真一想,每台机子做reduce时都会把结果put进本台机子维护的内存里面,当所有机子reduce完以后怎样把每台机子内存里的countMap对象聚集到一起返回给调用者呢?这个功能hadoop可以实现吗,如果要实现此功能,有其他解决方案吗?
              
               
               

已有(3)人评论

跳转到指定楼层
xukunddp 发表于 2013-10-16 13:41:55

            顶一个啊
        
回复

使用道具 举报

xukunddp 发表于 2013-10-16 13:42:50

            hope
        
回复

使用道具 举报

zhangkai08111 发表于 2013-10-16 13:43:32

            可以放到内存那是不是说明这部分数据量内存可以承受?如果可以承受,直接使用map或reduce的setup方法,使用之前先放到内存中。
回复

使用道具 举报

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

本版积分规则

关闭

推荐上一条 /2 下一条