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

电灯泡 电灯泡 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
我的map和reduce代码:

public static class MyMapper extends TableMapper<Text,IntWritable>{

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<Text, IntWritable, Text, IntWritable> {

private static Map<String,Integer> countMap = new HashMap<String,Integer>();

public void reduce(Text key, Iterable<IntWritable> 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
收藏 已收藏
分享
返回顶部
电灯泡
Hadoop生态社区 20,842 成员 4,695 内容