网上利用java实现mr操作实例相对较多,现将python实现mr操作实例---Wordcount分享如下:
在操作前,需要作如下准备:
1.确保linux系统里安装有python3.5,python3.6以上考虑到兼容性不是太友好,之前也踩过相应的坑。(这里对python3.5的安装不作细述,需注意环境的配置正确!)
2.安装mrjob:pip install mrjob(这里注意:pip是python2版本自带的,当你配置好python环境,需要给pip做个软连接,ln -s /usr/local/python3.5/bin/pip3 usr/bin/pip)3.在系统中创建一个文件夹,用来存放测试文件和python的脚步,本机直接在root目录中创建了mrjob文件,里面存放文件:text.txt(文件内容任意去网上拷段英文) wc.p(这里重点
是python的脚本,如下:
rom mrjob.job import MRJob class WordCount(MRJob): def mapper(self,key,lines): line =lines.strip().split(' ') for word in line: yield word,1 def reduceer(self,words,occrrence): yield words,sum(occrrence) if __name__ =="__main__": WordCount.run()
检验成果:
1.本地运行:在mrjob文件夹中执行命令:python3 wc.py -r local text.txt
"Welcome" 1 "to" 1 "Apacheu2122" 1 "Hadoopu00ae!" 1 "What" 1 "Is" 1 "Apache" 1 "Hadoop?" 1 "The" 1 "Apacheu2122" 1 "Hadoopu00ae" 1 "project" 1 "develops" 1 "open-source" 1 .................(省略!)
注意:这里结果虽然出来了,是不是得让结果保存到文件夹:python3 wc.py -r local text.txt >hh.txt (重定向)
2.集群上运行:pyhton3 wc.py -r hadoop hdfs://sxt/mrjob/text.txt >hh.txt(命令差不多!)