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回答
-
总结下
1)mapper的数据类型 默认就是reducer的输入
2)如果有combiner,那么mapper的输出类型就是combiner的输入类型,然后combiner后交给reducer处理
20
相似问题