MapReduce示例——WordCount(统计单词)
MapReduce示例——WordCount(统计单词)
过程分析
统计单词,把数据中的单词分别统计出出现的次数
过程图(图片源自网络):
实现Mapper、Reducer、Driver
WordCountMapper :
public class WordCountMapper extends Mapper<LongWritable,Text,Text,IntWritable> {private Text k = new Text();private IntWritable v = new IntWritable(1);/*** 重写map方法* @param key 行号* @param value 行数据* @param context* @throws IOException* @throws InterruptedException*/@Overrideprotected void map(LongWritable key, Text value, Context context) throws IOException, InterruptedException {// 获取一行的数据String valueString = value.toString();// 分割一行的数据String[] strings = valueString.split(" ");// 输出K-V对for (String string : strings) {k.set(string);context.write(k,v);}}
}
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
WordCountReduce :
public class WordCountReduce extends Reducer<Text,IntWritable,Text,IntWritable> {private IntWritable v = new IntWritable(0);/*** reduce合并过程* @param key key值* @param values 同一个key的value值得列表* @param context* @throws IOException* @throws InterruptedException*/@Overrideprotected void reduce(Text key, Iterable<IntWritable> values, Context context) throws IOException, InterruptedException {// 统计数字int count = 0;// 汇总数字for (IntWritable value : values) {count += value.get();}// 赋值v.set(count);// 输出context.write(key,v);}
}
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
WordCountDriver
public class WordCountDriver {public static void main(String[] args) throws IOException, ClassNotFoundException, InterruptedException {// 获取job对象System.setProperty("hadoop.home.dir", "E:\\hadoop-2.7.1");Configuration configuration = new Configuration();FileSystem fs = FileSystem.get(configuration);//configuration.set("mapreduce.framework.name","local");//configuration.set("fs.defaultFS","file:///");Job job = Job.getInstance(configuration);// 设置加载类job.setJarByClass(WordCountDriver.class);// 设置map和reduce类job.setMapperClass(WordCountMapper.class);job.setReducerClass(WordCountReduce.class);// 设置mapper输出类型job.setMapOutputKeyClass(Text.class);job.setMapOutputValueClass(IntWritable.class);// 设置最终输出类型job.setOutputKeyClass(Text.class);job.setOutputValueClass(IntWritable.class);// 设置输入文件和输出文件FileInputFormat.setInputPaths(job,new Path("E:\\hdfs\\input\\word.txt"));Path outPath = new Path("E:\\hdfs\\output");if (fs.exists(outPath)) {fs.delete(outPath, true);}FileOutputFormat.setOutputPath(job, new Path("E:\\hdfs\\output"));boolean waitForCompletion = job.waitForCompletion(true);System.out.println(waitForCompletion);System.exit(waitForCompletion?0:1);}
}
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
pom.xml
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><groupId>com.xing</groupId><artifactId>MapReduce</artifactId><version>1.0-SNAPSHOT</version><dependencies><dependency><groupId>org.apache.hadoop</groupId><artifactId>hadoop-client</artifactId><version>2.7.1</version></dependency></dependencies></project>
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
我用的本地windows开发环境,如果不知道怎么搭建本地开发环境可以看我这篇
【Spark】Windows运行本地spark程序——JAVA版本
搭建过程都是一样的。
结果:
MapReduce示例——WordCount(统计单词)相关推荐
- Hadoop入门实例——WordCount统计单词
首先要说明的是运行Hadoop需要jdk1.6或以上版本,如果你还没有搭建好Hadoop集群,请参考我的另一篇文章: Linux环境搭建Hadoop伪分布模式 马上进入正题. 1.启动Hadoop集群 ...
- Hadoop系列二:Hadoop单节点伪分布部署并执行mapreduce示例wordcount
HDFS在集群上实现分布式文件系统,MapReduce在集群上实现了分布式计算和任务处理.HDFS在MapReduce任务处理过程中提供了文件操作和存储等支持,MapReduce在HDFS的基础上实现 ...
- Hadoop之图解MapReduce与WordCount示例分析
Hadoop的框架最核心的设计就是:HDFS和MapReduce.HDFS为海量的数据提供了存储,MapReduce则为海量的数据提供了计算. HDFS是Google File System(GFS) ...
- Wordcount on YARN 一个MapReduce示例
Hadoop YARN版本:2.2.0 关于hadoop yarn的环境搭建可以参考这篇博文:Hadoop 2.0安装以及不停集群加datanode hadoop hdfs yarn伪分布式运行,有如 ...
- MapReduce初体验——统计指定文本文件中每一个单词出现的总次数
相信小伙伴们看了小菌上一篇博客<什么是MapReduce(入门篇)>后,对MapReduce的概念有了更深的认知!本篇博客,小菌为大家带来的则是MapReduce的实战--统计指定文本文件 ...
- MapReduce之WordCount字数统计
第一次WordCount小游戏 在idea客户端上面进行WordCount统计 1:创建mapper类继承mapper(选hadoop类型) public class wordcountMapper ...
- 使用Eclipse开发工具运行MapReduce统计单词出现次数
使用Eclipse开发工具运行MapRuce统计单词出现次数 1.##我在这里将原先准备好的10000个单词的英语文章通过U盘移动到了Ubuntu系统中,也可以通过其它的方式,比如FTP传输或者将Ub ...
- 单机版 hadoop 云平台(伪分布式)搭建 统计单词
1.首先需要配置java环境 CentOS安装java jdk教程 2.上传hadoop到/usr/local目录 并解压 cd /usr/local ls linux上传下载文件教程 3.配置had ...
- 第一个MapReduce程序-------WordCount
本关任务 词频统计是最能体现MapReduce思想的程序,结构简单,上手容易. 词频统计的大致功能是:统计单个或者多个文本文件中每个单词出现的次数,并将每个单词及其出现频率按照<k,v>键 ...
最新文章
- SAP MM ME1P查询采购订购订单价格历史
- Android混淆解析
- 全球及中国生物质发电行业项目可行性及十四五运营前景研究报告2022-2027年
- 【收藏】Harbor私有仓库中如何彻底删除镜像释放存储空间:vmware/registry:2.6.2-photon进行垃圾回收
- c++ string 拼接_C++日志(二十五)字符数组、字符数组指针和string类
- java 获得站点地址_JavaWeb项目里面的路径获取方法总结
- 5G 消息绝地求生:盘活短信 VS 击垮微信?
- 网站建设-部署与发布
- Python操作数据库完成接口测试
- op手机突然显示无服务器,op手机 云服务器
- JavaSE复习_6 枚举类
- CF 61E 树状数组+离散化 求逆序数加强版 三个数逆序
- 孔浩javacript基础笔记一
- [SQL优化工具]Quest.Central.For.Databases——SQL Tuning for SQL Server
- 2021年5月国产数据库大事记-墨天轮
- 西方占星术中的人体十二宫
- java 爬虫 微博_最新新浪微博爬虫程序Java版 2015
- 亚夏汽车首发申请通过 成第2家IPO经销商_135
- 三十.什么是vm和vc?
- C# 怎么把集合转换成数据库添加语句,把类转换成sql语句
热门文章
- python哨兵循环_Python:deadloop之非模态交互界面(模态循环)(哨兵循环)
- linux resin 自动启动不了,Resin 安装-配置-自启动-Linux
- matlab路面,赛道道路路况分析问题 matlab高手进下
- vue进行判断使用class_vue如何判断dom的class
- 113. Leetcode 674. 最长连续递增序列 (动态规划-子序列问题)
- python函数整理
- Python应用实战案例-Pythongeopandas包详解(附大量案例及代码)
- tableau实战系列(三十九)-Tableau可视化之多种地图绘制汇总
- MATLAB从入门到精通-matlab中符号推导应用及相关技巧
- 运营类产品:用户行为的影响因子是什么?