繁体   English   中英

重复数据删除工作与Reducer中的预期不符

[英]Deduplication work not as expected in reducer

我有一个PersonDto对象,它覆盖了equals()hashCode()方法。

减速器中的主要代码:

Set<PersonDto> set = new HashSet()<>;
while(iterator.hasNext()){
   Record red= iterator.next();
   PersonDto dto = new PersonDto();
   dto.setName(red.getString("name"));
   dto.setAge(red.getBigInt("age"));
   set.add(dto);
}
for (PersonDto dto : set) {
   context.write(new Text(dto.getname()+","+dto.getAge()));
}

但是HDFS上的最终文件显示相同的记录仍然存在。 代码有什么问题? 我应该使用地图密钥进行重复数据删除吗?

您是否有1个以上的减速器? 如果是,则存在一个可能性,即在多个化简器中可以使用同一Person对象。 在这种情况下,由于每个reducer都是自己执行并写入HDFS,因此最终输出中可能会有重复的Person记录。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM