mrjob

使用 Python 编写 MapReduce 作业
授权协议 Apache
开发语言 Python
所属分类 服务器软件、 分布式应用/网格
软件类型 开源软件
地区 不详
投 递 者 尉迟彬
操作系统 跨平台
开源组织
适用人群 未知
 软件概览

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()
  • mrjob mrjob 简介 使用python开发在Hadoop上运行的程序, mrjob是最简单的方式 mrjob程序可以在本地测试运行也可以部署到Hadoop集群上运行 如果不想成为hadoop专家, 但是需要利用Hadoop写MapReduce代码,mrJob是很好的选择 mrjob 安装 使用pip安装 pip install mrjob mrjob实现WordCount from mrj

  • 什么是mrjob 一个通过hadoop、emr的mapreduce编程接口(streamming),扩展出来的一个python的编程框架。 安装 先安装python 2.5+版本(对应0.4) 线上目前版本:python 2.6.8 调度机安装mrjob即可: http://pythonhosted.org/mrjob/guides/quickstart.html   具体安装方法: 进入mrjo

  • 首先翻译一下官方文档,然后写一个小的案例进行理解。更详细的内容可以参考最新的文档和源码(https://github.com/Yelp/mrjob) 输入输出协议 官方链接:https://pythonhosted.org/mrjob/g ... jobs.html#protocols mrjob假设所有数据都是换行符分隔的字节。它使用protocols序列和反序列化这些字节。每个job(作业)都

  • MRJob mrjob是python的mapreduce编程接口,可以很方便的完成单层或多层map-reduce任务。现利用mrjob完成最简单的字频统计任务。 1.数据与脚本 我们要统计的文本如下: a b c a b d d 将其保存并命名为text文件 [hadoop@localhost workspace]$ cat text a b c a b d d 相应的py程序如下 [hadoo

  • Hadoop Streaming 是Hadoop提供的一个 MapReduce 编程工具,它允许用户使用任何可执行文件、脚本语言或其他编程语言来实现 Mapper 和 Reducer 作业。Hadoop Streaming 使用了 Unix 的标准输入输出作为 Hadoop 和其他编程语言的开发接口,因此在其他的编程语言所写的程序中,只需要将标准输入作为程序的输入,将标准输出作为程序的输出就可以了

  • MapReduce实战 3.3.1 利用MRJob编写和运行MapReduce代码 mrjob 简介 使用python开发在Hadoop上运行的程序, mrjob是最简单的方式 mrjob程序可以在本地测试运行也可以部署到Hadoop集群上运行 如果不想成为hadoop专家, 但是需要利用Hadoop写MapReduce代码,mrJob是很好的选择 mrjob 安装 使用pip安装 pip ins

  • 1, 安装mrjob pip install mrjob pip的安装看上一篇文章。 2,代码测试 mrjob安装完之后,就可以直接用了。如果hadoop已经配置好,不需要额外的配置东西(HADOOP_HOME这个环境变量要配置好),基于mrjob的程序就可以直接在hadoop平台上运行了。 mrjob提供了几种代码运行的方式,1)本地测试,就是直接在本地运行代码 2)在本地模拟hadoop的运行

  • 512错误解决(好像是512,反正是5开头) 将基于mrjob写的mapreduce python程序在hadoop上运行时会出现512错误,其原因很简单,是因为没有运行yarn(hadoop的任务调度程序),请参考网络上的相关配置教程对相应xml进行配置后启动yarn,512错误便能得到解决。个人配置及启动流程如下,供参考: 1.mapred-site.xml文件 位于/usr/local/ha

  • 前言 Hadoop为Java外的其他语言,提供了一个友好的实现mapreduce的框架,即Hadoop-Streaming。Hadoop-Streaming只需遵循从标准输入stdin读入,写出到标准输出stdout即可,并且它还提供了丰富的参数控制,来实现许多mapreduce的复杂操作。Mrjob对Hadoop-Streaming进行了封装,是一个实现mapreduce任务的python开源框

  • 本地测试 在本地测试作业python your_mrjob_sub_class.py <log_file >output 此脚本会使用InlineMRJobRunner自动调用自身运行各个步骤。如果要更接近Hadoop,可以使用--runner=local,这个参数不会将你当前的工作目录加到PYTHONPATH,而是设置一些Hadoop环境变量,使用多个子处理器来处理任务。 也可以使用参数--ma

  • 转载请注明出处:http://blog.csdn.net/l1028386804/article/details/79056120 一、环境准备想了解如何使用原生Python编写MapReduce程序或者如何搭建Hadoop环境请参考博文《Python之——使用原生Python编写Hadoop MapReduce程序(基于Hadoop 2.5.2) 》的内容 Mrjob(http://python

  • 1)在Hadoop中跑一个Python MRJob脚本报以下错误 java.lang.RuntimeException: PipeMapRed.waitOutputThreads(): subprocess failed with code 1         at org.apache.hadoop.streaming.PipeMapRed.waitOutputThreads(PipeMapRe

  • 1.如果每个on子句都使用相同的连接键的话,那么只会产生1个MapReduce job,不相同的连接键的话是2个MapReduce job

 相关资料
  • 我正在尝试将MapReduce作业中的日志写入HDFS。我使用的是Apache Flume NG。 我的环境: Java 6 日志4j 1.2.16 Apache Hadoop 2.3.0 Apache水槽1.4.0 问题#1 我已经创建了简单的MapReduce作业作为Maven项目,并且在我的类中使用了 作业完成后,我可以在系统日志文件中看到我的日志。 我想创建自己的log4j配置并将日志写入

  • 问题内容: 我最近将其作为一个项目来教自己如何使用Python编程。总的来说,我必须说给我留下深刻的印象。 过去,我通常会坚持使用VBA进行编程,主要是针对MS Excel(但也有些MS Access和Word),并且一直在努力寻找使之能够执行Python只需一个命令即可轻松完成的工作的方法。 我想知道是否存在合理的方法来利用Python的编程功能和易用性,同时使用Office(主要是Excel)

  • 我们正在使用Python,我们希望使用Opentelemetry来处理日志。我看到Python的日志还不受支持(https://opentelemetry.io/docs/instrumentation/python/)对于C/。NET的测试版/实验版。我的问题是,是否有任何意义的包装。NET和Python一起使用?我主要关心的是日志生成,而不是收集(因为收集在应用程序外部,我可以使用任何PL)。

  • 问题内容: 我有一个函数数组,我试图产生一个由数组中元素组成的函数。我的方法是: 此方法似乎无效,将不胜感激。 (我要反转列表,因为这是我希望函数成为的组合顺序) 问题答案: 它不起作用,因为您在循环中创建的所有匿名函数都引用相同的循环变量,因此共享其最终值。 作为快速解决方案,您可以将分配替换为: 或者,您可以从函数返回lambda: 要了解发生了什么,请尝试以下实验: 这个结果使许多人感到惊讶

  • 问题内容: 我非常精通PHP,但想尝试一些新的东西。 我也了解一些Python,足以完成基础知识的工作,但是还没有在Web设计类型的情况下使用过。 我刚刚写了这个,它的工作原理是: 事实是,这似乎很麻烦。如果不使用诸如django之类的大型工具,那么编写可处理获取和发布的脚本的最佳方法是什么? 问题答案: 您的问题是关于基本CGI脚本的,请看您的示例,但是似乎每个人都选择了“使用我最喜欢的框架”来

  • 我有一个函数数组,我试图生成一个函数,它由数组中的元素组成。我的做法是: 此方法似乎不起作用,请给予帮助。 (我正在反转列表,因为这是我希望函数的组合顺序)