Combiner会报错:
Exception in thread "main" java.lang.RuntimeException: java.lang.ArithmeticException: / by zero
at com.aliyun.odps.mapred.LocalJobRunner.submit(LocalJobRunner.java:94)
at com.aliyun.odps.mapred.JobClient.submitJob(JobClient.java:157)
at com.aliyun.odps.mapred.JobClient.runJob(JobClient.java:60)
at mygroup.mapreduce.JobLauncher.main(JobLauncher.java:480)
Caused by: java.lang.ArithmeticException: / by zero
at com.aliyun.odps.mapred.local.MapOutputBuffer.getPartition(MapOutputBuffer.java:102)
at com.aliyun.odps.mapred.local.MapOutputBuffer.add(MapOutputBuffer.java:106)
at com.aliyun.odps.mapred.local.MapDriver$ProxiedMapContextImpl$CombinerContextImpl.write(MapDriver.java:231)
at mygroup.mapreduce.MyCombiner.reduce(MyCombiner.java:29)
at com.aliyun.odps.mapred.local.MapDriver$ProxiedMapContextImpl.close(MapDriver.java:274)
at com.aliyun.odps.mapred.local.MapDriver.run(MapDriver.java:317)
at com.aliyun.odps.mapred.LocalJobRunner.handleNonPipeMode(LocalJobRunner.java:234)
at com.aliyun.odps.mapred.LocalJobRunner.runJob(LocalJobRunner.java:113)
at com.aliyun.odps.mapred.LocalJobRunner.submit(LocalJobRunner.java:91)
我看到combiner输出的格式和Mapper是一致的,但是在文档里说要和Reducer保持一致:
”
[font=微软雅黑, 'Microsoft Yahei', 'Hiragino Sans GB', tahoma, arial, 宋体]与经典的MapReduce框架协议不同,在ODPS中,Combiner的输入、输出的参数必须与Reduce保持一致。” https://help.aliyun.com/document_detail/27875.html?spm=5176.doc27878.6.163.rG0r59
如果我把Combiner中“context.write(key, count);” 改成“context.write(key);” (不输出count) 那么整个程序是可以运行的,但是Reducer并不会被执行,不知道为什么
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
-------------------------
-------------------------
-------------------------
-------------------------
-------------------------