场景

MapReduce Java API实例-统计单词出现频率:

https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/119410169

在上面是统计出现过的单词以及出现的次数。

如果只是从中统计出现过的单词,即类似于求单词集合的并集的效果。

注:

博客:
https://blog.csdn.net/badao_liumang_qizhi
关注公众号
霸道的程序猿
获取编程相关电子书、教程推送与免费下载。

实现

与统计单词频率相比,只是将最终结果的出现次数去掉,因此只需将WorldCount

中reduce函数输出value的值设置为NullWriable即可,同时将Job的OutputValue

类型设置为NullWritable。

1、数据集修改如下:

2、新建map

package com.badao.worldunion;import org.apache.hadoop.io.IntWritable;
import org.apache.hadoop.io.Text;
import org.apache.hadoop.mapreduce.Mapper;import java.io.IOException;
import java.util.StringTokenizer;public class WorldUnionMapper extends Mapper<Object,Text,Text,IntWritable> {//1、编写map函数,通过继承Mapper类实现里面的map函数//   Mapper类当中的第一个函数是Object,也可以写成Long//   第一个参数对应的值是行偏移量//2、第二个参数类型通常是Text类型,Text是Hadoop实现的String 类型的可写类型//   第二个参数对应的值是每行字符串//3、第三个参数表示的是输出key的数据类型//4、第四个参数表示的是输出value的数据类型,IntWriable 是Hadoop实现的int类型的可写数据类型public final static IntWritable one = new IntWritable(1);public Text word = new Text();//key 是行偏移量//value是每行字符串@Overridepublic void map(Object key, Text value, Context context) throws IOException, InterruptedException {StringTokenizer stringTokenizer = new StringTokenizer(value.toString());while (stringTokenizer.hasMoreTokens()){//stringTokenizer.nextToken()是字符串类型,使用set函数完成字符串到Text数据类型的转换word.set(stringTokenizer.nextToken());//通过write函数写入到本地文件context.write(word,one);}}
}

3、新建reduce

package com.badao.worldunion;import org.apache.hadoop.io.IntWritable;
import org.apache.hadoop.io.NullWritable;
import org.apache.hadoop.io.Text;
import org.apache.hadoop.mapreduce.Reducer;import java.io.IOException;//第一个参数类型是输入值key的数据类型,map中间输出key的数据类型
//第二个参数类型是输入值value的数据类型,map中间输出value的数据类型
//第三个参数类型是输出值key的数据类型,他的数据类型要跟job.setOutputKeyClass(Text.class) 保持一致
//第四个参数类型是输出值value的数据类型,它的数据类型要跟job.setOutputValueClass(IntWriable.class) 保持一致public class WordUnionReducer extends Reducer<Text, IntWritable,Text, NullWritable> {public IntWritable result = new IntWritable();//key就是单词  values是单词出现频率列表@Overridepublic void reduce(Text key, Iterable<IntWritable> values, Context context) throws IOException, InterruptedException {NullWritable a = null;context.write(key,a);}
}

4、新建job

package com.badao.worldunion;import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.Path;
import org.apache.hadoop.io.IntWritable;
import org.apache.hadoop.io.NullWritable;
import org.apache.hadoop.io.Text;
import org.apache.hadoop.mapreduce.Job;
import org.apache.hadoop.mapreduce.lib.input.FileInputFormat;
import org.apache.hadoop.mapreduce.lib.output.FileOutputFormat;
import org.apache.hadoop.mapreduce.lib.reduce.IntSumReducer;import java.io.IOException;public class WorldUnionJob {public static void main(String[] args) throws InterruptedException, IOException, ClassNotFoundException {wordCountLocal();}public static void wordCountLocal()throws IOException, ClassNotFoundException, InterruptedException{Configuration conf = new Configuration();//实例化一个作业,word count是作业的名字Job job = Job.getInstance(conf, "wordunion");//指定通过哪个类找到对应的jar包job.setJarByClass(WorldUnionJob.class);//为job设置Mapper类job.setMapperClass(WorldUnionMapper.class);//为job设置reduce类job.setReducerClass(WordUnionReducer.class);//设置map的输出 value的数据类型job.setMapOutputValueClass(IntWritable.class);//为job的输出数据设置key类job.setOutputKeyClass(Text.class);//为job输出设置value类job.setOutputValueClass(NullWritable.class);//为job设置输入路径,输入路径是存在的文件夹/文件FileInputFormat.addInputPath(job,new Path("D:\\wordsunion.txt"));//为job设置输出路径FileOutputFormat.setOutputPath(job,new Path("D:\\worldunion4"));job.waitForCompletion(true);}}

运行job查看结果

MapReduce Java API实例-统计出现过的单词相关推荐

  1. MapReduce Java API实例-统计单词出现频率

    场景 Windows下使用Java API操作HDFS的常用方法: https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/11938210 ...

  2. MapReduce Java API实例-排序

    场景 MapReduce Java API实例-统计单词出现频率: https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/11941016 ...

  3. MapReduce Java API实例-统计平均成绩

    场景 MapReduce Java API实例-统计单词出现频率: https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/11941016 ...

  4. java mapreduce api_Hadoop实战-初级部分 之 Hadoop MapReduce JAVA API

    精品视频课程推荐 Java数据结构和算法精讲版 本课程专注于数据结构和算法的内容,使用Java来进行代码示例,不空洞的讲解概念和理论,重点放在代码的实现和示例上. 从零开始.全面系统.成体系的讲解数据 ...

  5. Java编程之统计英文句子中单词个数、不同单词和重复单词个数

    一.题目 从键盘输入一个英文句子,统计该句子中的英文单词个数,并找出所有单词存放到一个数组中.同时,输出该句子中的不同单词和重复单词以及它们的个数. 二.实验代码 package fighting; ...

  6. MapReduce Java API-多输入路径方式

    场景 MapReduce Java API实例-统计单词出现频率: https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/11941016 ...

  7. hbase java api 两种方式

    NoSQL Hbase JAVA API 实例一 导入架包: <dependency><groupId>org.apache.hbase</groupId>< ...

  8. es java api 子查询,criteria 子查询 es

    elasticsearch.core.query中Criteria类各个方法详解--CSDN... 2016年2月25日 asticsearch.core.query中Criteria类各个方法详解 ...

  9. libsvm java 实例_LibSVM Java API调用示例程序

    [实例简介] LibSVM Java API调用示例程序 Eclipse 完整工程可以运行 相关详情见http://blog.csdn.net/yangliuy/article/details/804 ...

最新文章

  1. devops_最低可行DevOps
  2. 如何清除SQL数据库日志,清除后对数据库有什么影响
  3. Docker 更换下载镜像源
  4. 使用Angular可重用Component思路实现一个自带图标(icon)的input控件
  5. postforobject 设置代理_Spring RestTemplate和代理身份验证
  6. 如何代理物联卡?需要什么流程认证?
  7. 放假前的最后一篇文章
  8. UWP控件——StackPanel堆叠面板的使用
  9. winrar 4.20注册码
  10. 物联管家PDA 无缝对接网店管家云端 电商erp 实现电商条码无线仓储
  11. B5服务器内昵称注册,CSGO-B5开放注册
  12. 获取FPGA芯片序号
  13. “下班不关电脑,外套不穿出办公室”,这届年轻人为了假装加班,拼了
  14. IG痛失亚军,含泪夺冠,奖杯是用区块链的技术合成的你知道吗
  15. 书中内力图如何用计算机绘制,计算机绘图制图基础.doc
  16. Spark Sql优化之3.0特性AQE
  17. CF13A 最大公约数加进制转换
  18. golang gui 那些事
  19. java 微信开发收到乱码_微信公众号开发调用微信接口得到的参数中文变成乱码问题...
  20. Java环境配置与eclipse安装破解与汉化

热门文章

  1. 2021 年百度之星·程序设计大赛 - 初赛二 1001 签到(找规律,快速幂)
  2. python的numpy库的基本用法_python numpy库np.percentile用法说明
  3. springboot websocket_SpringBoot 集成 WebSocket 实现前后端消息互传
  4. matlab怎么在c 中调用,在C中调用Matlab (转)
  5. 关于如何卸载Lenovo System Interface Foundation方法
  6. 利用计算机提高数学课堂教学,计算机技术在数学课堂教学中的应用微探
  7. 鼠标键盘唤醒计算机,除了按下电源按钮唤醒计算机,WIN10也可以使用鼠标或键盘来唤醒...
  8. mysql 触发器_进阶msql触发器-指南
  9. 网站更换域名和服务器不收录,网站更换域名改如何操作
  10. java中thread实例_Java多线程2:Thread中的实例方法