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

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章