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. PHP sprintf() 函数详解

    PHP中,sprintf()的作用是把字符串进行多种类型的格式化一般用法如下: sprintf ( string $format [, mixed $... ] ) : string 返回一个按要求格 ...

  2. Webpack和Gulp,Webpack和Gulp的基本区别:

    Gulp和Webpack的基本区别: gulp可以进行js,html,css,img的压缩打包,是自动化构建工具,可以将多个js文件或是css压缩成一个文件,并且可以压缩为一行,以此来减少文件体积,加 ...

  3. 17 Spring Data JPA的常用接口分析

    思考 在客户的案例中,我们发现在自定义的CustomerDao中,并没有提供任何方法就可以使用其中的很多方法,那么这些方法究竟是怎么来的呢?答案很简单,对于我们自定义的Dao接口,由于继承了JpaRe ...

  4. background-attachment 制造视差滚动效果案例

    简介 background-attachment 属性设置背景图像是否固定或者随着页面的其余部分滚动.可能的值有三个: scroll 默认值.背景图像会随着页面其余部分的滚动而移动. fixed 当页 ...

  5. Drf(DjangoRestFramewok)

    第一部分 问题 1.前后端分离? vue.js 后端给前段返回json数据 2.移动端盛行. app 后端给app返回json数据 3.PC端应用? crm项目,前段后端一起写,运行在浏览器上. 一般 ...

  6. vue相关的前端UI库

    1,element-ui 这个笔者用的最多,但是官网不知道咋回事.打不开,难道被黑了?! 地址(http://element-ui.cn/#/zh-CN/component/installation) ...

  7. [C++]请麻烦压一下定理的棺材板啦

    从去年还在竞赛的时候2/12的原博客里搬运来的 不得不说之前取名真的很艺术qwq 今天开始上的数论课,让头发以肉眼可见的速度掉落emmm 没关系我头发多我不怕啦啦啦QwQ 其中最令人头疼的就是那些人名 ...

  8. Natas20 Writeup(Session登录,注入参数)

    Natas20: 读取源码,发现把sessionID存到了文件中,按键值对存在,以空格分隔,如果$_SESSION["admin"]==1,则成功登陆,得到flag.并且通过查询所 ...

  9. 新文预览 | IoU-aware Single-stage Object Detector for Accurate Localization

    论文基于RetinaNet提出了IoU-aware sinage-stage目标检测算法,该算法在regression branch接入IoU predictor head并通过加权分类置信度和IoU ...

  10. python浅学【网络服务中间件】之Redis

    一.关于NoSQL: NoSQL(NoSQL = Not Only SQL ),"不仅仅是SQL". 相比MySQL等关系型数据库,NoSQL为非关系型的数据存储 Nosql中比较 ...