mrjob使用 Python 编写 MapReduce 作业

联合创作 · 2023-10-01 06:36

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



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()
浏览 20
点赞
评论
收藏
分享

手机扫一扫分享

编辑 分享
举报
评论
图片
表情
推荐
点赞
评论
收藏
分享

手机扫一扫分享

编辑 分享
举报