温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

Reduce统计结果汇总混乱怎么办

发布时间:2021-12-23 16:00:55 来源:亿速云 阅读:93 作者:iii 栏目:云计算

这篇文章主要讲解了“Reduce统计结果汇总混乱怎么办”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Reduce统计结果汇总混乱怎么办”吧!

    在hadoop2.7.1上写了一段MapReduce程序,做一个word cloud统计,程序执行结果中有数据,但是混乱:很多完全相同的关键字没有归并到一起,也有个别的归并到了一起,但汇总值没有超过2的,如下:

        中国红    1

        中国红    1

        中国红    1

        摩卡黑    2

        摩卡黑    2

    百度说,其他同仁遇到的大多是reduce没有输出结果,其原因是Reduce应该用Iterable还是Iterator造成的,而且还是0.19和0.20版本时代的问题。而我有结果输出,只是没有完全执行合计。Reduce代码如下:

 static class MyReducer extends
   Reducer<Text, LongWritable, Text, LongWritable> {
  LongWritable result = new LongWritable();
  public void reduce(Text key, Iterable<IntWritable> values,
    Context context) throws IOException, InterruptedException {
   int sum = 0;
   for (IntWritable val : values) {
    sum += val.get();
   }
   result.set(sum);
   context.write(key, result);
  }
 }

莫非对Reduce处理中文Key有问题?不太可能。遂将所有Key用URLEncoder转码,结果仍然一样,不能归并。查半天,未果。

一觉醒来,忽然发现程序import中竟然还有IntWritable,我曾经把所有Int改成了LongWritable,这个程序竟然漏了!看上面代码中Class定义中使用了LongWritable,计算的时候却使用的IntWritable,修改,再运行,归并正常。

    原来如此!Map和Reduce的数据类型不匹配通常会有ClassCastException,但LongWritable和IntWritable的转换没有报异常,默默的计算错了,竟然!

感谢各位的阅读,以上就是“Reduce统计结果汇总混乱怎么办”的内容了,经过本文的学习后,相信大家对Reduce统计结果汇总混乱怎么办这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是亿速云,小编将为大家推送更多相关知识点的文章,欢迎关注!

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI