mrjob使用 Python 编写 MapReduce 作业

联合创作 · 2023-10-01

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

手机扫一扫分享

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

手机扫一扫分享

编辑
举报