mrjob使用 Python 编写 MapReduce 作业
mrjob 可以让用 Python 2.5+ 来编写 MapReduce 作业,并在多个不同平台上运行,你可以:
- 使用纯 Python 编写多步的 MapReduce 作业
- 在本机上进行测试
- 在 Hadoop 集群上运行
- 使用 Amazon Elastic MapReduce (EMR) 在云上运行
一些重要功能:
- 在EMR,Google Cloud Dataproc,您自己的Hadoop群集或本地(用于测试)上运行作业。
- 编写多步骤作业(将一个映射减少步骤馈入下一个步骤)
- 在EMR或您自己的Hadoop集群上轻松启动Spark作业
- 在Hadoop中复制您的生产环境
- 上传您的源代码树并将其放入您的工作
$PYTHONPATH
- 运行make和其他安装脚本
- 设置环境变量(例如
$TZ
) - 从tarball轻松安装python软件包(仅适用于EMC)
- 安装程序由
mrjob.conf
配置文件透明处理
- 上传您的源代码树并将其放入您的工作
- 自动解释错误日志
- SSH隧道到hadoop作业跟踪器(仅适用于EMC)
- 最少的设置
- 要在EMR上运行,请设置
$AWS_ACCESS_KEY_ID
和$AWS_SECRET_ACCESS_KEY
- 要在Dataproc上运行,请设置
$GOOGLE_APPLICATION_CREDENTIALS
- 无需设置即可在自己的Hadoop集群上使用mrjob
- 要在EMR上运行,请设置
pip 的安装方法:pip install mrjob
示例代码:
from mrjob.job import MRJob class MRWordCounter(MRJob): def mapper(self, key, line): for word in line.split(): yield word, 1 def reducer(self, word, occurrences): yield word, sum(occurrences) if __name__ == '__main__': MRWordCounter.run()
评论