在eclipse下编写简单mapreduce程序
转载请注明:http://hanlaiming.freetzi.com/?p=117
前两天搭建好了hadoop环境,昨天完成了hadoop的eclipse插件编译,所以今天测试一下一些简单的mapreduce程序如何在eclipse上运行。
1,准备好测试文件,提前上传到hdfs目录所在的文件夹下,比如我的是input。在eclipse中新建项目,选择Mapreduce Project,命名为WordCount,然后导入hadoop中自带的WordCount.java,找不到可以搜索,然后右击WordCount.java,选择Run as——Run Configurations,在里面的java application处右键选择New,然后在Arguments处添加你的hadoop目录所在的输入和输出文件夹参数,比如,我的是:
hdfs://minglaihan:9000/user/hadoop/input hdfs://minglaihan:9000/user/hadoop/output
这个是表示,你的第一个参数是输入目录,第二个参数是输出目录,然后点击Run,就Ok了,Hdfs的系统要不断手动刷新,这一点要注意。
2,简单的wordcount仅仅是让我们知道eclipse下怎样运行,接下来开始学习数据去重DataDeduction,主要运行步骤和前面类似,这里主要分析一下我在网上找到的代码为什么不能顺利在我的hadoop上运行。
网上大部分提供的代码都是一个版本,参考http://www.cnblogs.com/xia520pi/archive/2012/06/04/2534533.html,但是总提示我ClassNotFound Map的错误,我后来看了一下最近买的一本书,修改了一下代码,最后成功运行。主要的改动有去掉这两行即可,具体原因可能是在参数里设定了就不用在函数中说明吧,反而会让系统判定缺失一些数据。
conf.set("mapred.job.tracker", "192.168.1.2:9001");String[] ioArgs=new String[]{"dedup_in","dedup_out"};
3,然后是数据排序,这个测试研究了挺长时间,但是和最终结果还是有点偏差,所以等研究明白再做更新,ok~~