MapReduce

Description

MapReduce是Google提出的一个软件架构,用于大规模数据集(大于1TB)的并行运算。概念“Map(映射)”和“Reduce(归纳)”,及他们的主要思想,都是从函数式编程语言借来的,还有从矢量编程语言借来的特性。

下面我们要实现一个词频统计的MapReduce Worker,通俗来说就是统计一段文本中各个单词出现的次数。

MapReduce包括两部分:Map任务和Reduce任务。

Map任务:给定一段文本,对于其每一个单词逐一映射为key为该单词,value为字符串"1"的键值对,并按出现顺序逐个输出键值对

Reduce任务:给定一个键值对序列,将相同的key的value值相加,并将其按key从小到大输出键值对

Note: 单词的分割标准为空格分隔

Input 第一行包括字符串task—— 代表任务类型,有Map和Reduce两种。

若为Map任务,第二行包括一行字符串text(0 < |text| <= 1e7) ——一段需要处理的文本。

若为Reduce,第二行包括整数n (0 < n <= 1e5)—— 键值对序列长度,第3到n+3行输入键值对key和value(0 <=

|key| <= 1e5, 0<=value<=1000) —— 要处理的键值对序列。 有多组样例,请处理到文件结尾。

键值对格式为key value。

保证正常运算过程中int类型不溢出。

Output 对于Map任务,输出文本后中每个单词映射的键值对的key和value。

对于Reduce任务,输出排序后的键值对的key和value。 键值对格式为key value。

每个样例间用空行分割。

Sample Input 1
Map
This is a MapReduce problem inspired by MapReduce
Reduce
8
This 1
is 1
a 1
MapReduce 1
problem 1
inspired 1
by 1
MapReduce 1
Sample Output 1
This 1
is 1
a 1
MapReduce 1
problem 1
inspired 1
by 1
MapReduce 1 MapReduce 2
This 1
a 1
by 1
inspired 1
is 1
problem 1

思路

用STL中的map 模拟这个过程

题解

#include<iostream>
#include<cstdio>
#include<cmath>
#include<map>
#include<algorithm>
#include<queue>
#include<string>
using namespace std;
#define ll long long const int Len = 1e6 + 5;
int n,m; string s[Len];
map<string, int> mp;
string st; int main()
{
ios::sync_with_stdio(false); cin.tie(0);
//freopen("T.txt","r",stdin);
while(cin >> st)
{
if(st == "Map")
{
int k = 0;
while(cin >> s[k])
{
if(s[k] == "Reduce")
{
cout << endl;
goto lab;
}
cout << s[k] << " " << 1 <<endl;
}
cout << endl;
}
else
{
mp.clear();
lab:;
int n;
cin >> n;
int val;
for(int i = 1; i <= n; i ++)
cin >> st >> val, mp[st] += val; for(auto x : mp)
{
cout << x.first << " " << x.second <<endl;
}
cout << endl;
mp.clear();
}
} return 0;
}

MapReduce( map的使用)的更多相关文章

  1. 关于mapreduce.map.java.opts

    a)   Update the property in relevant mapred-site.xml(from where client load the config). b) Import t ...

  2. mapreduce map 的个数

    在map阶段读取数据前,FileInputFormat会将输入文件分割成split.split的个数决定了map的个数.影响map个数(split个数)的主要因素有: 1) 文件的大小.当块(dfs. ...

  3. MapReduce Map数 reduce数设置

    JobConf.setNumMapTasks(n)是有意义的,结合block size会具体影响到map任务的个数,详见FileInputFormat.getSplits源码.假设没有设置mapred ...

  4. MapReduce: map读取文件的过程

    我们的输入文件 hello0, 内容如下: xiaowang 28 shanghai@_@zhangsan 38 beijing@_@someone 100 unknown 逻辑上有3条记录, 它们以 ...

  5. MapReduce 图解流程超详细解答(1)-【map阶段】

    转自:http://www.open-open.com/lib/view/open1453097241308.html 在MapReduce中,一个YARN  应用被称作一个job, MapReduc ...

  6. MapReduce启动的Map/Reduce子任务简要分析

      对于Hadoop来说,是通过在DataNode中启动Map/Reduce java进程的方式来实现分布式计算处理的,那么就从源码层简要分析一下hadoop中启动Map/Reduce任务的过程.   ...

  7. MapReduce源码分析之Task中关于对应TaskAttempt存储Map方案的一些思考

    我们知道,MapReduce有三层调度模型,即Job——>Task——>TaskAttempt,并且: 1.通常一个Job存在多个Task,这些Task总共有Map Task和Redcue ...

  8. MapReduce 图解流程超详细解答(2)-【map阶段】

    接上一篇讲解:http://blog.csdn.net/mrcharles/article/details/50465626 map任务:溢写阶段 正如我们在执行阶段看到的一样,map会使用Mappe ...

  9. MongoDB聚合运算之mapReduce函数的使用(11)

    mapReduce 随着"大数据"概念而流行. 其实mapReduce的概念非常简单, 从功能上说,相当于RDBMS的 group 操作 mapReduce的真正强项在哪? 答:在 ...

  10. MapReduce剖析笔记之二:Job提交的过程

    上一节以WordCount分析了MapReduce的基本执行流程,但并没有从框架上进行分析,这一部分工作在后续慢慢补充.这一节,先剖析一下作业提交过程. 在分析之前,我们先进行一下粗略的思考,如果要我 ...

随机推荐

  1. SSL/TLS 协议运行机制概述(一)

    SSL/TLS 协议运行机制概述(一) SSL/TLS 发展史 1994年,NetScape 设计了SSL协议(Secure Sockets Layer) 1.0,未正式发布 1995年,NetSca ...

  2. Linux 文件系统及 ext2 文件系统

      linux 支持的文件系统类型 Ext2:     有点像 UNIX 文件系统.有 blocks,inodes,directories 的概念. Ext3:     Ext2 的加强版,添加了日志 ...

  3. windows下安装spark-python

    首先需要安装Java 下载安装并配置Spark 从官方网站Download Apache Spark™下载相应版本的spark,因为spark是基于hadoop的,需要下载对应版本的hadoop才行, ...

  4. Fink SQL 实践之OVER窗口

    问题场景 Flink SQL 是一种使用 SQL 语义设计的开发语言,用它解决具体业务需求是一种全新体验,类似于从过程式编程到函数式编程的转变一样,需要一个不断学习和实践的过程.在看完了 Flink ...

  5. 图数据库 Nebula Graph TTL 特性

    导读 身处在现在这个大数据时代,我们处理的数据量需以 TB.PB, 甚至 EB 来计算,怎么处理庞大的数据集是从事数据库领域人员的共同问题.解决这个问题的核心在于,数据库中存储的数据是否都是有效的.有 ...

  6. 【C++】Strassen算法代码

    本文仅代码,无理论解释 实话实说,我觉得这个算法在C系列的语言下,简直垃圾到爆炸--毕竟是一群完全不懂程序数学家对着纸弄出来的,看起来好像非常的有用,实际上耗时是非常爆炸的. 但是<算法导论&g ...

  7. JDBC开源框架:DBUtils自定义业务类型相关转换器

    dbutils提供的handler转换不能满足实际业务开发的需求.比如枚举转int,时间类型LocalDateTime,实体对象的属性名与字段未能相对应. mysql表member结构字段: id.m ...

  8. leetcode之820. 单词的压缩编码 | python极简实现字典树

    题目 给定一个单词列表,我们将这个列表编码成一个索引字符串 S 与一个索引列表 A. 例如,如果这个列表是 ["time", "me", "bell& ...

  9. Trie树-XOR-1695. Kanade的三重奏

    2020-03-18 21:58:18 问题描述: 给你一个数组A [1..n],你需要计算多少三元组(i,j,k)满足(i <j <k)和((A [i] xor A [j])<(A ...

  10. Layui-admin-iframe通过页面链接直接在iframe内打开一个新的页面,实现单页面的效果

    前言: 使用Layui-admin做后台管理框架有很长的一段时间了,但是一直没有对框架内iframe菜单栏切换跳转做深入的了解.今天有一个这样的需求就是通过获取超链接中传递过来的跳转地址和对应的tab ...