1. 输入文件:
姓名 年龄(以'/t’分割)
eg:
张三 15
李四 15
张三 16
张三 15
输出:将姓名和年龄相同的归一,并输出其人数
eg:上述输入,输出为:
姓名 年龄 人数(以'/t’分割)
张三 15 2
李四 15 1
张三 16 1
2. map程序:
#include
#include
using namespace std;
int main(int argc, char** argv)
{
string name,age;
//读入姓名、年龄
while(cin >> name >> age)
{
//输出姓名、年龄、人数
cout << name << "/t" << age << "/t" << "1" << endl;
}
return 0;
}
编译生成可执行程序:
g++ -o mapper mapper.cpp
3. reducer程序:
#include
#include
#include
using namespace std;
int main(int argc, char** argv)
{
string key, value;
int num;
//个数统计
mapint> count_stat;
mapint>::iterator it_count_stat;
//读入数据并插入map
while(cin >> key >> value >> num)
{
string tmp_key = key + "/t" + value;
//插入数据
it_count_stat = count_stat.find(tmp_key);
if(it_count_stat != count_stat.end())
{
(it_count_stat->second)++;
}
else
{
count_stat.insert(make_pair(tmp_key, 1));
}
}
//输出统计结果
for(it_count_stat = count_stat.begin(); it_count_stat != count_stat.end(); it_count_stat++)
{
cout<first<<"/t"<second<
}
return 0;
}
编译生成可执行程序:
g++ -o reducer reducer.cpp
4. 测试数据:
5. 单机测试运行:
$ cat test.txt | ./mapper | ./reducer
李四 20 1
张三 15 2
张三 16 1
6. Hadoop集群运行:
以'/t’作为分隔符,并以前两个字段作为key,reduce任务3个,输入命令:
$ hadoop fs -put test.txt /user/test.txt
$ hadoop streaming -D stream.map.output.field.separator='/t' /
-D stream.num.map.output.key.fields=2 /
-input /user/test.txt /
-output /user/tmp_1324 /
-mapper ./mapper -reducer ./reducer /
-file mapper -file reducer /
-jobconf mapred.reduce.tasks=3 /
-jobconf mapre.job.name="c++_test"
7.查看输出:
$ hadoop fs -cat /user/tmp_1324/part-00000
李四 20 1
张三 16 1
$ hadoop fs -cat /user/part-00001
$ hadoop fs -cat /user/part-00002
张三 15 2
分享到:
相关推荐
( Hadoop Streaming编程实战(C++、PHP、Python).pdf ) ( Hadoop Streaming编程实战(C++、PHP、Python).pdf )
Hadoop硬实战:Hadoop in Practice
hadoop2.7汇总:新增功能最新编译64位安装、源码包、API、eclipse插件下载
Hadoop技术内幕:深入解析YARN架构设计与实现原理 高清完整中文版PDF下载
Hadoop学习总结之四:Map-Reduce的过程解析
Hadoop 技术内幕:深入解析Hadoop Common 和HDFS 架构设计与实现原理
Hadoop实战:Hadoop in Action
Hadoop Streaming 官方中文文档
Hadoop技术内幕:深入解析Hadoop Common 和HDFS 架构设计与实现原理 (大数据技术丛书) 原版书籍,非扫描版,使用kindle可以打开,也可以转换为epub使用ibooks打开
《Hadoop硬实战》收集了85个问题场景以及解决方案的实战演练。在关键问题领域对基础概念和实战方法做了权衡,例如导入导出、序列化,以及LZO压缩。你将会学习到每个技术的细节,以及当遇到一个具体问题时能够给出...
Hadoop 任务Hadoop 2.x 和 map-reduce 示例、配置和任务 ( ) Hadoop 任务和作业的存储库建议的工作流程: 每个人都在主分支(master)中单独启动一个以自己名字命名的文件夹,所有的工作都在主分支完成,你可以自由...
第02节:hadoop精讲之map reduce原理及代码.rar
具体的解释可以参见我的博客:http://dongxicheng.org/mapreduce/hadoop-streaming-programming/
实时Hadoop实战篇:基于Storm实时路况分析和实时路径推荐系统方案.doc
Hadoop技术内幕:深入解析YARN架构设计与实现原理.pdf
数据架构师第006节实战.基于hadoop streaming的wordcount .mp4
实战hadoop资料集:开启通向云计算的捷径,Hadoop的资料下载
《Hadoop技术内幕:深入解析Hadoop Common和HDFS架构设计与实现原理》还从源代码实现中对分布式技术的精髓、分布式系统设计的优秀思想和方法,以及Java语言的编码技巧、编程规范和对设计模式的精妙运用进行了总结和...
本书对Hadoop Mapreduce进行详细讲解,切合实际应用,能够更深入地学习MapReduce,确实是一本不错的书。
《Hadoop技术内幕:深入解析MapReduce架构设计与实现原理》内容简介:“Hadoop技术内幕”共两册,分别从源代码的角度对“Common+HDFS”和“MapReduce的架构设计和实现原理”进行了极为详细的分析。《Hadoop技术内幕:...