关于Reduce端取key值的问题

xiao_gang2014 2018-09-26 04:42:29
protected void reduce(ComboKey key, Iterable<NullWritable> values, Context context) {
int year = key.getYear();
int temp = key.getTemp();

//为什么此处同一个对象key,可以取出不同的值
for(NullWritable v : values){
System.out.println(key.getYear() + " : " + key.getTemp());
}
context.write(new IntWritable(year),new IntWritable(temp));
}
本段代码是二次排序程序中的Reduce部分代码。整个程序能够正确运行。ComboKey是我自己实现的一个普通组合类,并不是数组。我的问题是,为什么在此处的循环能够获取到不同的key值,而key本身在该段代码中并没有改变?还望各位给予帮助,谢谢!
...全文
282 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
每一次的reduce都是的到一个map端传过来的一个key及这个key对应的value,而map过来的value是这个key的数据集,这里的key-value并不是java中map集合的k-v概念,在MapReduce中k-v的key是可以重复的。

20,808

社区成员

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

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