`
dacoolbaby
  • 浏览: 1265799 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

Python模拟MapReduce的流程

阅读更多

说一下开发环境,是在WIN7下面进行的。

python环境是:python2.7

 

MapReduce的主要流程有:

Map阶段->Shuffle阶段->Reduce阶段。

那么一下分别对应三个python脚本片段:

 

数据样本:test.txt

a b c d
a b c d
aa bb cc dd
ee ff gg hh
foo foo quux labs foo bar quux

 

第一个脚本,叫做mapper.py

#!/bin/env python

import sys
def mapword(w):
    print "%s\t%d"%(w,1)
for line in sys.stdin:
    line = line.strip()

    words = line.split()
    m = map(mapword,words)

 

第二个脚本,叫做sort.py

import sys
def mapword(w):
    print "%s\t%d"%(w,1)
m = []
for line in sys.stdin:
    line = line.strip()

    word,count = line.split('\t')
    m.append((word,count))
m = sorted(m)
for i in m:
    print "%s\t%s"%i

 注意,实际上在分布式环境下,这个是sort by而不是order by。

也就是说在每个分区下是有序的,而并不是全局有序。

如果要做到全局有序,必须在一个reduce里面进行。

 

第三脚本,是reducer.py

import sys

current_word = None
current_count = 0
word = None

for line in sys.stdin:
    line = line.strip()

    word, count = line.split('\t', 1)

    try:
        count = int(count)
    except ValueError:
        continue

    if current_word == word:
        current_count += count
    else:
        if current_word:
            print '%s\t%s' % (current_word, current_count)
        current_count = count
        current_word = word

if current_word == word:
    print '%s\t%s' % (current_word, current_count)

 

在这个简单的word count例子里面。

ruducer的作用就像是一个dict或者叫做map,将数据维护到一份内存里面。然后在最后一起输出。

 

在Windows下的调试命令如下:

>type test.txt | python mapper.py | python sort.py | python reducer.py

 

结果如下:



 

 

 

 

 

 

 

 

 

 

  • 大小: 4.2 KB
分享到:
评论

相关推荐

    Python开发mapreduce的demo

    3. **run.sh**:这是一个Shell脚本,通常用于在Linux环境下运行整个MapReduce流程。它可能会设置环境变量,指定输入和输出文件路径,然后依次调用Python的map和reduce脚本,最后执行整个流程。 在实际运行时,你...

    使用python实现mapreduce(wordcount).doc

    - **易于调试**:可以通过管道在本地模拟map/reduce流程,方便单机调试。 - **参数控制**:丰富的作业提交参数使得许多高级功能无需编写Java代码即可实现。 2. **Hadoop Streaming的局限** - **数据格式限制**:...

    Python-mrjob在Hadoop或AmazonWebServices上运行MapReduce作业

    `mrjob`库由 Yelp 开发并维护,它为Python程序员提供了一种方便的方式来定义Map和Reduce函数,以及整个作业的执行流程。下面是一些关于如何使用`mrjob`的关键知识点: 1. **安装与配置**:首先,你需要通过pip安装`...

    windows下编写mapreduce程序

    在Windows上编写MapReduce程序时,UnxUtils可以帮助你模拟Linux环境,因为Hadoop通常是与Unix/Linux环境一起使用的。 3. **编程语言**:MapReduce程序通常用Java编写,因为它是最兼容的编程语言,Hadoop的API也主要...

    让python在hadoop上跑起来

    在Shell中,可以通过管道操作(`|`)连接mapper和reducer,以及`sort`命令(用于按照键排序中间结果),来模拟Hadoop的MapReduce流程。例如,给定的输入数据会经过mapper的处理,然后通过排序,再由reducer计算最终...

    Python库 | maggma-0.27.0.tar.gz

    Maggma是一个用于构建高性能计算和数据分析工作流程的Python库。这个库的设计目的是为了简化大型数据集的管理和处理,特别是在材料科学和量子计算领域。Maggma的核心理念是利用MongoDB数据库的强大功能,提供一个...

    基于Python大数据的民宿评论数据情感分析系统.rar

    综上所述,这个项目旨在通过Python结合大数据工具链,实现民宿评论的情感分析,提供一个完整的数据处理流程,同时展示了前后端开发的实战技能,对于提升数据科学和Web开发的综合能力具有很高的价值。

    Java+python实现爬虫+大数据的招聘需求分析系统-源码

    Hadoop的MapReduce模型可以进行分布式数据处理,而Spark提供了更高效的内存计算,适合实时或近实时的数据分析。在这个系统中,可能会用到这些工具对招聘数据进行清洗、整合和挖掘,例如统计各类职位的需求量、薪资...

    实操模拟题(30分).rar

    这里提到的"实操模拟题(30分).rar"可能是一个针对这些技能的实践练习或考试题目,包含了两个关键文件:train1.csv和MapReduce题目.doc。 首先,我们来看`train1.csv`。这是一个CSV(Comma Separated Values)文件...

    java大数据作业_4Zookeeper

    【Java大数据作业_4Zookeeper】的课后问题主要涵盖了Zookeeper在HBase中的作用、Zookeeper客户端连接信息获取、Zookeeper实现FIFO队列、MapReduce流程与中间结果的伪代码描述,以及倒排索引的编程实现。以下是详细...

    基于Map_Reduce爬虫,可抽取各大新闻网站的新闻正文并进行分类和聚类.zip

    7. **Windows部署**:项目在Window10/11环境下运行良好,表明可能使用了跨平台的Python环境(如Anaconda)和Hadoop的Windows版本,或者使用了模拟Linux环境(如WSL)来运行MapReduce。 8. **项目说明文档**:提供...

    HCIA bigdata H13-711 所有题目和考试模拟软件.zip

    Hadoop是大数据处理的重要框架,H13-711认证会涉及Hadoop生态系统的核心组件,包括HDFS(Hadoop Distributed File System)分布式文件系统,MapReduce并行计算模型,以及YARN资源调度器。考生还需要熟悉其他相关技术...

    数据分析项目by_BIGBOSS.zip

    爬虫的实现涉及URL管理、网页解析、数据存储等技术,同时需要考虑反爬策略,如设置延时、模拟浏览器行为、处理验证码等。 四、项目结构 通常一个完整的数据分析项目会包括以下部分: 1. 数据收集:通过爬虫或其他...

    HadoopDemo

    5. **Hadoop流(Hadoop Streaming)**:这个特性允许使用任何可执行文件(如Python脚本)作为Map和Reduce任务,项目中可能会有相关的应用实例。 6. **数据导入导出**:理解如何将数据导入HDFS,以及如何将处理后的...

    hadoop,map,reduce,hdfs

    Hadoop Streaming允许用户使用除Java之外的语言(如Python、Perl等)编写MapReduce程序。而Hadoop Pipes则是另一种机制,它允许用户使用C++编写高性能的MapReduce任务。 #### 开发MapReduce应用 开发MapReduce应用...

    hadoop 编码

    同时,Hadoop提供了丰富的工具,如Hadoop Streaming,允许使用其他语言(如Python或Perl)编写Mapper和Reducer,增强了灵活性。 为了调试和测试Hadoop程序,你可以使用Hadoop的本地模式,这会在单机上模拟分布式...

    大数据Big Data+华为认证HCIE+培训资料+已解锁无密码

    "HCIE-Big Data-Data Mining 实验考试模拟题.docx" 是一份模拟实验考试的题目,考生可以通过这些题目熟悉考试流程和格式,检验自己对大数据技术的掌握程度。 "HCIE-Big Data-Data Mining V2.0 考试大纲_unlocked....

    hadoop基于大数据的学习资源推送系统的设计与实现毕业论文.docx

    E-R图用于表示实体关系,流程表和功能模块图则清晰展示系统工作流程。 4. 系统测试与评估 测试包括功能测试、性能测试和稳定性测试。通过模拟用户行为,验证系统能否正确实现资源推送,同时对系统的响应速度、并发...

    hadoop开发者 前4期

    - 伪分布式模式:在单台机器上模拟分布式环境,所有Hadoop组件都运行在同一台机器的不同Java进程中。 - 完全分布式模式:在多台机器上部署,适用于大规模生产环境。 4. **Hadoop编程模型**: - **MapReduce编程*...

    GZ-2022041 大数据技术与应用赛项赛题.zip

    首先,数据采集是大数据流程的第一步,涉及网络爬虫、API接口等技术,用于从互联网、物联网设备等不同来源获取数据。了解并掌握这些技术,能够帮助参赛者有效地获取所需信息。 其次,数据存储是大数据处理的基础。...

Global site tag (gtag.js) - Google Analytics