python map reduce示例
2014-03-07 16:30
148 查看
执行shell脚本run.sh
map.py
hadoop默认以'\t'分隔key和value,第一个字段为key
到reduce时,相同key的都在一起被同一个red.py处理,故可以连续读取相同key的每一行。(java中相同key的都以数组的形式放在一次reduce中了,而python却仍要读取多行,但相同key的都排在一起)
#! /bin/bash IN_DIR="/input/20140221" OUT_DIR="/output/20140221" HPHOME=$HADOOP_HOME/bin/ JAR_PACKAGE=$HADOOP_HOME/contrib/streaming/hadoop-streaming-0.20.2-cdh3u0.jar MAP_FILE=$(pwd)/map.py RED_FILE=$(pwd)/red.py ${HPHOME}hadoop fs -rmr $OUT_DIR ${HPHOME}hadoop jar $JAR_PACKAGE \ -numReduceTasks 1 \ -jobconf mapred.job.queue.name=platform \ -input $IN_DIR \ -output $OUT_DIR \ -file $MAP_FILE \ -file $RED_FILE \ -mapper $MAP_FILE \ -reducer $RED_FILE \ -inputformat SequenceFileAsTextInputFormat exit $?
map.py
#!/usr/bin/env python import sys for line in sys.stdin: line = line.strip() if line.find("str1")!=-1: item = line.split('\01') key = item[3] print '%s\t%s' % (key, 'str3') elif line.find("str2")!=-1: item = line.split('\01') key = item[2] value = item[5] print '%s\t%s\t%s' % (key, 'str3', value) else: passred.py
#!/usr/bin/env python from operator import itemgetter import sys word2count = {} total_count = 0 total_money = 0.0 total_error = 0 pre_pid = '' pre_money = 0.0 is_pre_push = 0 for line in sys.stdin: line = line.strip() if line.find('str3')!=-1: item = line.split('\t') total_money += float(item[2]) total_count += 1 else: pass print total_count, total_error, total_money ##最后才打印仅作为参考
hadoop默认以'\t'分隔key和value,第一个字段为key
到reduce时,相同key的都在一起被同一个red.py处理,故可以连续读取相同key的每一行。(java中相同key的都以数组的形式放在一次reduce中了,而python却仍要读取多行,但相同key的都排在一起)
相关文章推荐
- 我常用的几个第三方 Python 库
- Changes in Python
- windowXP下解决python2.7+Django-1.3.1中:importError:no module named django.core
- 【Python web 开发】 bottle 简单教程 (一)
- python利用wmi统计windows下内存信息
- python 3 中建立可迭代对象(making object iterable)
- Embedding Python in Multi-Threaded C/C++ Applications
- 轻松自动化---selenium-webdriver(python) (五)
- [Python 学习]2.5版yield之学习心得 - limodou的学习记录 - limodou是一个程序员,他关心的焦点是Python, DocBook, Open Source …
- 几个Python配置工具简介:setuptools、pip、virtualenv
- Python中的模块
- Python交互模式出现乱码,按tab,方向键时候出现乱码
- python批量改动指定文件夹文件名称
- Python实现多行注释的另类方法
- leetcode:Symmetric Tree【Python版】
- python正则匹配中文
- Python自学起飞――尝试
- Python 文件
- python3.4爬虫批量下载音乐
- python设计经典Pong 游戏