最近在学了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初步的更多相关文章

  1. 用python写MapReduce函数——以WordCount为例

    尽管Hadoop框架是用java写的,但是Hadoop程序不限于java,可以用python.C++.ruby等.本例子中直接用python写一个MapReduce实例,而不是用Jython把pyth ...

  2. 用Python写一个简单的Web框架

    一.概述 二.从demo_app开始 三.WSGI中的application 四.区分URL 五.重构 1.正则匹配URL 2.DRY 3.抽象出框架 六.参考 一.概述 在Python中,WSGI( ...

  3. Python实现MapReduce,wordcount实例,MapReduce实现两表的Join

    Python实现MapReduce 下面使用mapreduce模式实现了一个简单的统计日志中单词出现次数的程序: from functools import reduce from multiproc ...

  4. 快速掌握用python写并行程序

    目录 一.大数据时代的现状 二.面对挑战的方法 2.1 并行计算 2.2 改用GPU处理计算密集型程序 3.3 分布式计算 三.用python写并行程序 3.1 进程与线程 3.2 全局解释器锁GIL ...

  5. hadoop学习笔记——用python写wordcount程序

    尝试着用3台虚拟机搭建了伪分布式系统,完整的搭建步骤等熟悉了整个分布式框架之后再写,今天写一下用python写wordcount程序(MapReduce任务)的具体步骤. MapReduce任务以来H ...

  6. Python写各大聊天系统的屏蔽脏话功能原理

    Python写各大聊天系统的屏蔽脏话功能原理 突然想到一个视频里面弹幕被和谐的一满屏的*号觉得很有趣,然后就想用python来试试写写看,结果还真玩出了点效果,思路是首先你得有一个脏话存放的仓库好到时 ...

  7. python写红包的原理流程包含random,lambda其中的使用和见简单介绍

    Python写红包的原理流程 首先来说说要用到的知识点,第一个要说的是扩展包random,random模块一般用来生成一个随机数 今天要用到ramdom中unifrom的方法用于生成一个指定范围的随机 ...

  8. Python写地铁的到站的原理简易版

    Python地铁的到站流程及原理(个人理解) 今天坐地铁看着站牌就莫名的想如果用Python写其工作原理 是不是很简单就小试牛刀了下大佬们勿喷纯属小弟个人理解 首先来看看地铁上显示的站牌如下: 就想这 ...

  9. hadoop-初学者写map-reduce程序中容易出现的问题 3

    1.写hadoop的map-reduce程序之前所必须知道的基础知识: 1)hadoop map-reduce的自带的数据类型: Hadoop提供了如下内容的数据类型,这些数据类型都实现了Writab ...

随机推荐

  1. pycharm运行Django项目,提示UnicodeDecodeError: 'gbk' codec can't decode byte 0xa6

    确认pycharm编码都是utf-8的情况下,需要修改项目中settings.py 'DIRS': [ ],默认是空,将路径加入即可解决. TEMPLATES = [ { 'BACKEND': 'dj ...

  2. hbase的api操作之scan

    扫描器缓存----------------    面向行级别的.    @Test    public void getScanCache() throws IOException { Configu ...

  3. docker容器配置nginx负载均衡 -----加权

    首先要准备三个nginx的容器: 第二个容器: 第三个容器: 进入第一个容器  要配置的容器(docker exec -it 容器名 /bin/bash) vi /usr/local/nginx/co ...

  4. ionic2启动出现try again later

    新建IONIC2的项目时,启动只出现try again later 这个问题应该是安装依赖出现的,重装npm install 一次就可以了

  5. Mittag-Leffer函数, Matlab内部函数

    Mittag-Leffer函数: $E_{\alpha,\beta}(x) = \sum\limits^{\infty}_{k=0} \frac{x^k}{ \Gamma( \alpha k + \b ...

  6. input只能输入数字字母

    <input type='text' onkeyup="this.value=this.value.replace(/[^0-9-]+/,'');" /> 只能输入数字 ...

  7. Visual Studio 向工程中添加文件夹

    将要添加的文件夹拷贝到工程的目标文件夹中. 打开工程,在Solution Explorer中选中“Show All Files”按钮. 然后VS会显示文件夹中包含,但是不在工程中的文件夹. 右键该文件 ...

  8. Ubuntu gitlab安装文档及邮件通知提醒配置

    1.安装依赖包,运行命令 sudo apt-get install curl openssh-server ca-certificates postfix 2.由于gitlab官方源可能被“墙”,首先 ...

  9. 像调试java一样来调试Redis lua

    高并发的系统中,redis的使用是非常频繁的,而lua脚本则更是锦上添花.因为lua脚本本身执行的时候是一个事务性的操作,不会掺杂其他外部的命令,所以很多关键的系统节点都会用redis+lua来实现一 ...

  10. 跟随我在oracle学习php(10)

    正则表达式 做验证 做匹配 用符号来描述书写规则:/ 中间写正则表达式 /^ :匹配开头,$:匹配结尾 : /^ve/以ve开头的 /ve$/以ve结尾\d:一个任意的数字\w:一个任意的数字或字母\ ...