wrong key class类型不一致错误记录

来源:4-17 流量统计实战升级之自定义Partitioner

某不入流码农

2020-06-23

在根据老师代码开发中,自己使用了Combiner,从而遇到了这个错误,并尝试进行了解决,如下为解决记录,请老师看一下理解的原因是否正确,也当做是给慕友排坑了。
图片描述
图片描述
原因分析:因为Combiner是对Map的key进行预聚合操作,Reducer接受的是combiner处理后的KV,这里错误的使用Combiner(认为和Reducer的逻辑一样,就直接指定成了Reducer的class)
实际当执行完Combiner后,写出去的key就成了NullWritable类型,而真正到达Reducer后,期望接受的类型是Text,所有便抛出了异常,wrong key class

解决方法:自定义一个Combiner类,继承Reducer并重写reduce方法,将写入Key的类型,改为正确的即可
图片描述
总结:使用Combiner要注意Combiner的写出类型即为Reducer的读入类型,二者要保持一致。

写回答

1回答

Michael_PK

2020-06-24

总结下

1)mapper的数据类型 默认就是reducer的输入

2)如果有combiner,那么mapper的输出类型就是combiner的输入类型,然后combiner后交给reducer处理

2
0

Hadoop 系统入门+核心精讲

从Hadoop核心技术入手,掌握数据处理中ETL应用,轻松进军大数据

2398 学习 · 902 问题

查看课程