mapreduce的Python操作方法

1.mrjob简介

mrjob是一个编写mapreduce任务Python开源框架,它既可以模拟hadoop的mapreduce,也可以之间在hadoop上运行

2.安装mrjob

[root@i ~]# yum -y install epel-release

[root@i ~]# yum -y install python-pip
    (如果你没有安装pip)



[root@i ~]# pip install mrjob

3.mapreduce脚本

重载MRJob的mapper,reducer函数

#!/usr/bin/env python
# -*- coding:utf-8 -*-

from mrjob.job import MRJob

class MRWordCounter(MRJob):
    def mapper(self,key,line): #接收每一行的输入数据,处理后返回一堆key:value,初始化value值为1
        for word in line.split():
            yield word,1

    def reducer(self,word,occurrences): #接收mapper输出的key:value对进行整合,把相同key的value做累加(sum)操作后输出
        yield word,sum(occurrences)

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

 

 

4.mrjob运行方式、

Mrjob支持4种运行方式:内嵌(-r inline)、本地(-r local)、Hadoop(-r hadoop)、Amazon EMR(-r emr)

1.内嵌

[root@i ~]# python test.py input.txt -r inline -o output.txt

其中input.txt为数据输入

output.txt为reduce之后的数据

2.本地

用于本地模拟Hadoop调试,与内嵌方式的区别是启动了多进程执行每一个任务

[root@i ~]# python word_count.py -r local -o output.txt

3.hadoop

用于Hadoop环境,支持Hadoop运行调度控制参数

[root@i ~]# python word_count.py -r hadoop --jobconf mapreduce.job.priority=VREY_HIGH --jobconf mapreduce.job.maps=2 --jobconf mapreduce.job.reduces=1 -o hdfs:///output/hadoop hdfs:///user/hadoop/input

 

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值