跳转到主要内容

Python MapReduce框架

项目描述

https://github.com/Yelp/mrjob/raw/master/docs/logos/logo_medium.png

mrjob是一个Python 2.7/3.4+软件包,帮助您编写和运行Hadoop Streaming作业。

稳定版本(v0.7.4)文档

开发版本文档

https://travis-ci.org/Yelp/mrjob.png

mrjob完全支持Amazon的Elastic MapReduce(EMR)服务,允许您以每小时为基础购买Hadoop集群时间。mrjob对Google Cloud Dataproc(Dataproc)有基本支持,允许您以每分钟为基础购买Hadoop集群时间。它还可以与您自己的Hadoop集群一起工作。

一些重要特性

  • 在EMR、Google Cloud Dataproc、您自己的Hadoop集群或本地(用于测试)上运行作业。

  • 编写多步骤作业(一个map-reduce步骤输送到下一个步骤)

  • 轻松在EMR或您自己的Hadoop集群上启动Spark作业

  • 在Hadoop中复制生产环境

    • 上传源树并将其放入作业的$PYTHONPATH

    • 运行make和其他设置脚本

    • 设置环境变量(例如$TZ

    • 轻松从tar包安装python包(仅限EMR)

    • 通过mrjob.conf配置文件透明地处理设置

  • 自动解析错误日志

  • 到hadoop作业跟踪器的SSH隧道(仅限EMR)

  • 最小化设置

    • 要在EMR上运行,设置$AWS_ACCESS_KEY_ID$AWS_SECRET_ACCESS_KEY

    • 要在Dataproc上运行,设置$GOOGLE_APPLICATION_CREDENTIALS

    • 在您自己的Hadoop集群上使用mrjob无需设置

安装

pip安装mrjob

从v0.7.0版本开始,Amazon Web Services和Google Cloud Services是可选依赖项。要使用这些服务,请分别使用aws和google目标进行安装。例如

pip install mrjob[aws]

一个简单的Map Reduce作业

此示例的代码和其他示例代码存储在mrjob/examples中。

"""The classic MapReduce job: count the frequency of words.
"""
from mrjob.job import MRJob
import re

WORD_RE = re.compile(r"[\w']+")


class MRWordFreqCount(MRJob):

    def mapper(self, _, line):
        for word in WORD_RE.findall(line):
            yield (word.lower(), 1)

    def combiner(self, word, counts):
        yield (word, sum(counts))

    def reducer(self, word, counts):
        yield (word, sum(counts))


if __name__ == '__main__':
     MRWordFreqCount.run()

试试看吧!

# locally
python mrjob/examples/mr_word_freq_count.py README.rst > counts
# on EMR
python mrjob/examples/mr_word_freq_count.py README.rst -r emr > counts
# on Dataproc
python mrjob/examples/mr_word_freq_count.py README.rst -r dataproc > counts
# on your Hadoop cluster
python mrjob/examples/mr_word_freq_count.py README.rst -r hadoop > counts

在Amazon上设置EMR

在Google上设置Dataproc

高级配置

要在其他AWS区域运行,上传源树,运行make,并使用其他高级mrjob功能,您需要设置mrjob.conf。mrjob在其conf文件中查找

  • $MRJOB_CONF的内容

  • ~/.mrjob.conf

  • /etc/mrjob.conf

有关更多信息,请参阅mrjob.conf文档

参考

更多信息

感谢Greg Killion (ROMEO ECHO_DELTA) 提供标志。

项目详情


发布历史 发布通知 | RSS源

下载文件

下载适合您平台的文件。如果您不确定选择哪个,请了解更多关于安装包的信息。

源代码分发

mrjob-0.7.4.tar.gz (652.4 kB 查看哈希值)

上传时间 源代码

构建分发

mrjob-0.7.4-py2.py3-none-any.whl (439.6 kB 查看哈希值)

上传时间 Python 2 Python 3

由以下组织支持

AWS AWS 云计算和安全赞助商 Datadog Datadog 监控 Fastly Fastly CDN Google Google 下载分析 Microsoft Microsoft PSF赞助商 Pingdom Pingdom 监控 Sentry Sentry 错误日志 StatusPage StatusPage 状态页面