網上利用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 "Apache\u2122" 1 "Hadoop\u00ae!" 1 "What" 1 "Is" 1 "Apache" 1 "Hadoop?" 1 "The" 1 "Apache\u2122" 1 "Hadoop\u00ae" 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(命令差不多!)