MapReduce( map的使用)
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的使用)的更多相关文章
- 关于mapreduce.map.java.opts
a) Update the property in relevant mapred-site.xml(from where client load the config). b) Import t ...
- mapreduce map 的个数
在map阶段读取数据前,FileInputFormat会将输入文件分割成split.split的个数决定了map的个数.影响map个数(split个数)的主要因素有: 1) 文件的大小.当块(dfs. ...
- MapReduce Map数 reduce数设置
JobConf.setNumMapTasks(n)是有意义的,结合block size会具体影响到map任务的个数,详见FileInputFormat.getSplits源码.假设没有设置mapred ...
- MapReduce: map读取文件的过程
我们的输入文件 hello0, 内容如下: xiaowang 28 shanghai@_@zhangsan 38 beijing@_@someone 100 unknown 逻辑上有3条记录, 它们以 ...
- MapReduce 图解流程超详细解答(1)-【map阶段】
转自:http://www.open-open.com/lib/view/open1453097241308.html 在MapReduce中,一个YARN 应用被称作一个job, MapReduc ...
- MapReduce启动的Map/Reduce子任务简要分析
对于Hadoop来说,是通过在DataNode中启动Map/Reduce java进程的方式来实现分布式计算处理的,那么就从源码层简要分析一下hadoop中启动Map/Reduce任务的过程. ...
- MapReduce源码分析之Task中关于对应TaskAttempt存储Map方案的一些思考
我们知道,MapReduce有三层调度模型,即Job——>Task——>TaskAttempt,并且: 1.通常一个Job存在多个Task,这些Task总共有Map Task和Redcue ...
- MapReduce 图解流程超详细解答(2)-【map阶段】
接上一篇讲解:http://blog.csdn.net/mrcharles/article/details/50465626 map任务:溢写阶段 正如我们在执行阶段看到的一样,map会使用Mappe ...
- MongoDB聚合运算之mapReduce函数的使用(11)
mapReduce 随着"大数据"概念而流行. 其实mapReduce的概念非常简单, 从功能上说,相当于RDBMS的 group 操作 mapReduce的真正强项在哪? 答:在 ...
- MapReduce剖析笔记之二:Job提交的过程
上一节以WordCount分析了MapReduce的基本执行流程,但并没有从框架上进行分析,这一部分工作在后续慢慢补充.这一节,先剖析一下作业提交过程. 在分析之前,我们先进行一下粗略的思考,如果要我 ...
随机推荐
- PHP sprintf() 函数详解
PHP中,sprintf()的作用是把字符串进行多种类型的格式化一般用法如下: sprintf ( string $format [, mixed $... ] ) : string 返回一个按要求格 ...
- Webpack和Gulp,Webpack和Gulp的基本区别:
Gulp和Webpack的基本区别: gulp可以进行js,html,css,img的压缩打包,是自动化构建工具,可以将多个js文件或是css压缩成一个文件,并且可以压缩为一行,以此来减少文件体积,加 ...
- 17 Spring Data JPA的常用接口分析
思考 在客户的案例中,我们发现在自定义的CustomerDao中,并没有提供任何方法就可以使用其中的很多方法,那么这些方法究竟是怎么来的呢?答案很简单,对于我们自定义的Dao接口,由于继承了JpaRe ...
- background-attachment 制造视差滚动效果案例
简介 background-attachment 属性设置背景图像是否固定或者随着页面的其余部分滚动.可能的值有三个: scroll 默认值.背景图像会随着页面其余部分的滚动而移动. fixed 当页 ...
- Drf(DjangoRestFramewok)
第一部分 问题 1.前后端分离? vue.js 后端给前段返回json数据 2.移动端盛行. app 后端给app返回json数据 3.PC端应用? crm项目,前段后端一起写,运行在浏览器上. 一般 ...
- vue相关的前端UI库
1,element-ui 这个笔者用的最多,但是官网不知道咋回事.打不开,难道被黑了?! 地址(http://element-ui.cn/#/zh-CN/component/installation) ...
- [C++]请麻烦压一下定理的棺材板啦
从去年还在竞赛的时候2/12的原博客里搬运来的 不得不说之前取名真的很艺术qwq 今天开始上的数论课,让头发以肉眼可见的速度掉落emmm 没关系我头发多我不怕啦啦啦QwQ 其中最令人头疼的就是那些人名 ...
- Natas20 Writeup(Session登录,注入参数)
Natas20: 读取源码,发现把sessionID存到了文件中,按键值对存在,以空格分隔,如果$_SESSION["admin"]==1,则成功登陆,得到flag.并且通过查询所 ...
- 新文预览 | IoU-aware Single-stage Object Detector for Accurate Localization
论文基于RetinaNet提出了IoU-aware sinage-stage目标检测算法,该算法在regression branch接入IoU predictor head并通过加权分类置信度和IoU ...
- python浅学【网络服务中间件】之Redis
一.关于NoSQL: NoSQL(NoSQL = Not Only SQL ),"不仅仅是SQL". 相比MySQL等关系型数据库,NoSQL为非关系型的数据存储 Nosql中比较 ...