Mrjob介绍 (hadoop with python)

来源:互联网 发布:酷狗音乐网络播放器 编辑:程序博客网 时间:2024/06/05 11:15

什么是mrjob

一个通过hadoop、emr的mapreduce编程接口(streamming),扩展出来的一个python的编程框架。

安装

先安装python 2.5+版本(对应0.4)

线上目前版本:python 2.6.8

调度机安装mrjob即可:

http://pythonhosted.org/mrjob/guides/quickstart.html

 

具体安装方法:

进入mrjob安装包解压后的目录

安装python setup.py install

使用举例

单词频率统计程序

frommrjob.jobimport MRJob

 

classMRWordCounter(MRJob):

defmapper(self, _, line):

        for wordin line.split():

            yield word,1

defreducer(self, word,occurrences):

        yield word,sum(occurrences)

if __name__ =='__main__':

    MRWordCounter.run()

 

注:

Generator使用:

occurrences

         for each inoccurrences:

                   #todo对所有的value进行操作

 

本地模式

python pyfile.py infilename.file

 

输出结果到文件outputfilename.file

python pyfile.py infilename.file >outputfilename.file

hadoop模式

python pyfile.py infilename.file –r hadoop

输出结果到文件outputfilename.file:

python pyfile.py infilename.file –r hadoop >outputfilename.file

分步执行模式

python pyfile.py infilename.file –r hadoop –mapper–step-num=0

本人开发选中所遇到的问题

无法切换输入流

解决方案:

--fileupload filename.file

寻求支持

网站http://stackoverflow.com/

官方网站

待调研的问题

控制map,reduce数量?

数据流切换问题?

 

Debug方法:

本地模式

分步执行

Jobtracker追踪hadoop执行时的问题

mrjob中间写结果到标准错误输出