python写mapReduce初步
最近在学了python了,从mapReduce开始 ,话不多说了,直接上代码了哈
map阶段,map.py文件
import sys # 标准输入
# 在终端的话,就需要这样了 cat a.txt | python map_new.py,通过一个管道的形式进行标准输入
# strip 就是避免字符串前后有回车或者是隐含字符,一般对于字符串都要strip() 一下。 for line in sys.stdin:
# print(line.strip())
ss = line.strip().split(' ')
for word in ss:
# word和1之间用制表符进行分割
print('\t'.join([word.strip(),'']))
reduce阶段:reduce.py文件
map到reduce阶段要做一个排序,相同的key放到了一起
import sys cur_word = None
sum = 0 for line in sys.stdin:
ss = line.strip().split('\t')
if len(ss) != 2:
continue
word,cnt = ss
# 当读取第一行时,cur_word肯定是None吧
if cur_word == None:
cur_word = word
if cur_word != word:
# 当 cur_word 和 word不相等时,将其输出
print('\t'.join([cur_word,str(sum)]))
cur_word = word
sum = 0 sum += int(cnt)
# 对最后一行进行输出
print('\t'.join([cur_word,str(sum)]))
还需要一个run.sh
HADOOP_CMD="/usr/local/src/hadoop-1.2.1/bin/hadoop"
STREAM_JAR_PATH="/usr/local/src/hadoop-1.2.1/contrib/streaming/hadoop-streaming-1.2.1.jar" INPUT_FILE_PATH_1="/1.data"
OUTPUT_PATH="/output" $HADOOP_CMD fs -rmr -skipTrash $OUTPUT_PATH # Step 1.
$HADOOP_CMD jar $STREAM_JAR_PATH \
-input $INPUT_FILE_PATH_1 \
-output $OUTPUT_PATH \
-mapper "python map.py" \
-reducer "python reduce.py" \
-file ./map_new.py \
-file ./red_new.py
# HADOOP_CMD: hadoop的bin的路径
# STREAM_JAR_PATH:streaming jar包的路径
# INPUT_FILE_PATH:hadoop集群上的资源输入路径
# OUTPUT_PATH:hadoop集群上的结果输出路径
执行和查看
# cat data.txt | pyton map.py | sort -k1 | python reduce.py > result.txt
# cat result.txt | sort -k2 -rn | head
写的比较简单哈
python写mapReduce初步的更多相关文章
- 用python写MapReduce函数——以WordCount为例
尽管Hadoop框架是用java写的,但是Hadoop程序不限于java,可以用python.C++.ruby等.本例子中直接用python写一个MapReduce实例,而不是用Jython把pyth ...
- 用Python写一个简单的Web框架
一.概述 二.从demo_app开始 三.WSGI中的application 四.区分URL 五.重构 1.正则匹配URL 2.DRY 3.抽象出框架 六.参考 一.概述 在Python中,WSGI( ...
- Python实现MapReduce,wordcount实例,MapReduce实现两表的Join
Python实现MapReduce 下面使用mapreduce模式实现了一个简单的统计日志中单词出现次数的程序: from functools import reduce from multiproc ...
- 快速掌握用python写并行程序
目录 一.大数据时代的现状 二.面对挑战的方法 2.1 并行计算 2.2 改用GPU处理计算密集型程序 3.3 分布式计算 三.用python写并行程序 3.1 进程与线程 3.2 全局解释器锁GIL ...
- hadoop学习笔记——用python写wordcount程序
尝试着用3台虚拟机搭建了伪分布式系统,完整的搭建步骤等熟悉了整个分布式框架之后再写,今天写一下用python写wordcount程序(MapReduce任务)的具体步骤. MapReduce任务以来H ...
- Python写各大聊天系统的屏蔽脏话功能原理
Python写各大聊天系统的屏蔽脏话功能原理 突然想到一个视频里面弹幕被和谐的一满屏的*号觉得很有趣,然后就想用python来试试写写看,结果还真玩出了点效果,思路是首先你得有一个脏话存放的仓库好到时 ...
- python写红包的原理流程包含random,lambda其中的使用和见简单介绍
Python写红包的原理流程 首先来说说要用到的知识点,第一个要说的是扩展包random,random模块一般用来生成一个随机数 今天要用到ramdom中unifrom的方法用于生成一个指定范围的随机 ...
- Python写地铁的到站的原理简易版
Python地铁的到站流程及原理(个人理解) 今天坐地铁看着站牌就莫名的想如果用Python写其工作原理 是不是很简单就小试牛刀了下大佬们勿喷纯属小弟个人理解 首先来看看地铁上显示的站牌如下: 就想这 ...
- hadoop-初学者写map-reduce程序中容易出现的问题 3
1.写hadoop的map-reduce程序之前所必须知道的基础知识: 1)hadoop map-reduce的自带的数据类型: Hadoop提供了如下内容的数据类型,这些数据类型都实现了Writab ...
随机推荐
- nginx增加第三方模块
增加第三方模块 ============================================================ 一.概述nginx文件非常小但是性能非常的高效,这方面完胜ap ...
- 『TensorFlow』专题汇总
TensorFlow:官方文档 TensorFlow:项目地址 本篇列出文章对于全零新手不太合适,可以尝试TensorFlow入门系列博客,搭配其他资料进行学习. Keras使用tf.Session训 ...
- python 近义词库包 synonyms 的使用
最近接触到nlp的一些东西,需要找出中文词语的近义词,也接触到了一个synonyms 的库, 分词,去停用词,word2vector 等 一些列nlp 的操作,还可以输出中文词语的近义词 https ...
- git pull更新错误解决办法
Your local changes to the following files would be overwritten by mergeerror: Your local changes to ...
- springcloud-hystrix断路器对微服务的容错处理
使用Hystrix实现微服务的容错处理 1.实现容错的手段 如果服务提供者响应的速度特别慢,那么消费者对提供者的请求就会强制等待,直到提供者响应或者超时.在高负载的情况下,如果不做任何处理,此类问题可 ...
- Python3 Tcp未发送/接收完数据即被RST处理办法
一.背景说明 昨天一个同事让帮忙写个服务,用于接收并返回他那边提交过来的数据,以便其查看提交的数据及格式是否正确. 开始想用django写个接口,但写接口接口名称就得是定死的,他那边只能向这接口提交数 ...
- day 11 装饰器
1.day 10 内容复习 # 之前做得的题 以后再遇到能保证会 # 下周二考 :所有的知识 # 面试题:认真对待 # # 三元运算符 # 接收结果的变量 = 条件为真的结果 if 条件 else 条 ...
- servlet进行用户名和密码校验
效果截图: 链接:https://pan.baidu.com/s/1eR051bUPerpEM3TDLtq9Xw 提取码:rjpy
- 【Monkey】Monkey获取包名的方式
获取包名的方式: 1.有源码:查看AndroidManifest.xml 2.只有apk: 2.1 aapt dump xmltree ColaBox.apk AndroidManifest.xml ...
- 白鹭wing的自动编译
1.lunch.json文件中的"preLaunchTask":"build",注释掉. 2.安装node-v6.11.2-x64.msi 3.安装tsc 命令 ...