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

电灯泡 2012-08-21 06:19:30
我的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可以实现吗,如果要实现此功能,有其他解决方案吗?
...全文
159 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
可以放到内存那是不是说明这部分数据量内存可以承受?如果可以承受,直接使用map或reduce的setup方法,使用之前先放到内存中。
电灯泡 2012-08-24
  • 打赏
  • 举报
回复
hope
电灯泡 2012-08-23
  • 打赏
  • 举报
回复
顶一个啊

20,808

社区成员

发帖
与我相关
我的任务
社区描述
Hadoop生态大数据交流社区,致力于有Hadoop,hive,Spark,Hbase,Flink,ClickHouse,Kafka,数据仓库,大数据集群运维技术分享和交流等。致力于收集优质的博客
社区管理员
  • 分布式计算/Hadoop社区
  • 涤生大数据
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧