分享

hadoop 2.7.3 wordcount 问题

muryliang 发表于 2017-3-23 22:38:44 [显示全部楼层] 回帖奖励 阅读模式 关闭右栏 4 6908
问题:修改后的wordcount程序没有反映出修改效果
描述:第一次搭建hadoop,使用centos7.3,三台slaver,一台master。直接按照http://blog.csdn.net/dream_an/article/details/52946840这个博客的方法搭建,运行自带wordcount,一切正常。 然后我照着hadoop in action里说的修改了源码里hadoop-mapreduce-project\hadoop-mapreduce-examples\src\main\java\org\apache\hadoop\examples路径下的wordcount, 把StringTokenizer的分隔符改成";," 分号和逗号,然后重新编译程序,用 hadoop  jar    playgound/wordcount.jar  WordCount  /input  /output 运行。 然后输入数据是aaa;bbb,ccc  ddd
运行后的结果仍然是以空格来分割:
aaa;bbb,ccc       1
ddd                   1
我还尝试更改reduce函数里,控制sum>=4才输出,发现也没有效果,后来我干脆直接在map里直接word.set(value.toString()),跳过分割一行的过程, 结果居然还是给我按照空格分行了。  这就好像我对map 和reduce函数做的修改完全没有起作用,求教这是为什么?

已有(4)人评论

跳转到指定楼层
SuperDove 发表于 2017-3-24 08:48:23
你虽说改了源码,但是你没有把源码的内容打包放到你的集群上做修改,修改后的源码要替换你集群上相应的jar包后才行
回复

使用道具 举报

einhep 发表于 2017-3-24 10:09:07
思路没有错,可能楼主具体操作过程中有出入。
建议自己重新写一个试试。而不是在原先的基础上修改。
回复

使用道具 举报

muryliang 发表于 2017-3-24 10:31:58
有了一些进展,我把WordCount.java这个重新文件名字换掉了,改成aaa.java,单独拿出来重新书上的流程编译,打成aaa.jar包,最后运行hadoop jar playground/aaa.jar  org/apache/hadoop/examples/aaa  /input /output,   结果可以成功按照新的分割符分了, 难道是之前和hadoop 内部默认会运行的wordcount.jar 名字重复了?之前是这样的:hadoop jar playground/wordcount.jar  org/apache/hadoop/examples/WordCount /input /output
回复

使用道具 举报

starrycheng 发表于 2017-3-24 17:27:00
muryliang 发表于 2017-3-24 10:31
有了一些进展,我把WordCount.java这个重新文件名字换掉了,改成aaa.java,单独拿出来重新书上的流程编译, ...

可能系统中有同名的,楼主自定义的没有被调用
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

推荐上一条 /2 下一条