mrjob文档

mrjob是一个方便的Python库,用于与Hadoop进行交互,支持本地调试,优化数据传输。基本流程包括mapper、combiner和reducer步骤。mapper处理键值对并产生新的键值对,combiner进行局部聚合减少数据量,reducer则对键的所有值进行处理并输出结果。示例程序展示了词频统计功能,同时提到可以通过init和final方法进行自定义扩展。
摘要由CSDN通过智能技术生成

mrjob是个非常好的python和hadoop连接的方式,可以本地调试,通过后再放在hadoop上跑。


mrjob的最简单sample是一个计数的程序

<span style="font-size:18px;"><span style="font-size:18px;">from mrjob.job import MRJob


class MRWordFrequencyCount(MRJob):

    def mapper(self, _, line):
        yield "chars", len(line)
        yield "words", len(line.split())
        yield "lines", 1

    def reducer(self, key, values):
        yield key, sum(values)


if __name__ == '__main__':
    MRWordFrequencyCount.run()</span></span>

mrjob中,所有的job任务都是从MRJob中继承的类定义的。这个类通过定义step的方式定义方法。

step由mapper,combiner,reducer组成。

mapper接受参数为一个键(key)一个值(value),然后yields零个或者很多键值对作为输出,单一step中输出的所有键值对都是通过同一个键打包的。

combiner接受参数为一个键和键对应的值的子集,输出零个或者多个键值对。combiner是一个优化器,在每个mapper后立刻执行,用于减少总的数据传输。

reducer接受参数为一个键和当前step下键对应的全集(

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值