mapreduce程序不能在分布式模式下产生所需的输出

cidc1ykv  于 2021-06-04  发布在  Hadoop
关注(0)|答案(1)|浏览(290)

我需要一些帮助在我的Map减少代码。代码运行完全是在eclipse和独立模式下进行的,但是当我打包代码并尝试在伪分布式模式下本地运行它时,输出并不像我期望的那样。

Map input records = 11
Map input records = 11

Reduce input records = 11
Reduce output records = 0

这些就是我得到的价值观。
当我在eclipse或独立模式下使用相同的config&input文件运行相同的代码时

Map input records = 11
Map output records = 11

Reduce input records = 11
Reduce output records = 4

有谁能告诉我出了什么事吗。。??
我尝试了为eclipse->export->runable jar和form terminal构建.jar文件的两种方法(javac-classpath hadoop-core-1.0.4-d classes mapredcode.java&&jar-cvf mapredcode.jar-c classes/)
我该如何调试这个。。

rryofs0p

rryofs0p1#

你用的是枪吗 combiner() 方法?如果是的话。那么合路器的o/p是否与Map器的o/p相同?
因为在hadoop中,combiner是在hadoop本身的支配下运行的,在您的情况下可能不会以伪distributed模式运行。合路器本身就是一个用来降低网络流量的减速机。
代码应该是这样的,即使组合器没有运行,reducer也应该从Map器中获得预期的格式。
希望有帮助。

相关问题