MapReduce之WordCount本地测试

news/2024/11/28 10:56:23/

1)需求

在给定的文本文件中统计输出每一个单词出现的总次数。
(1)输入数据
在这里插入图片描述
在这里插入图片描述

2)期望输出数据

banzhang 1
cls 2
hadoop 1
jiao 1
ss 2
xue 1

2)需求分析

按照MapReduce编程规范,分别编写Mapper,Reducer,Driver。

3)环境准备

(1)创建maven工程,MapReduceDemo
(2)在pom.xml文件中添加如下依赖

<dependencies><dependency><groupId>org.apache.hadoop</groupId><artifactId>hadoop-client</artifactId><version>3.1.3</version></dependency><dependency><groupId>junit</groupId><artifactId>junit</artifactId><version>4.12</version></dependency><dependency><groupId>org.slf4j</groupId><artifactId>slf4j-log4j12</artifactId><version>1.7.30</version></dependency>
</dependencies>

(2)在项目的src/main/resources目录下,新建一个文件,命名为“log4j.properties”,在

(3)创建包名:com.xiaoming.mapreduce.wordcount

4)编写程序

(1)编写Mapper类

import java.io.IOException;
import org.apache.hadoop.io.IntWritable;
import org.apache.hadoop.io.LongWritable;
import org.apache.hadoop.io.Text;
import org.apache.hadoop.mapreduce.Mapper;public class WordCountMapper extends Mapper<LongWritable, Text, Text, IntWritable>{Text k = new Text();IntWritable v = new IntWritable(1);@Overrideprotected void map(LongWritable key, Text value, Context context)	throws IOException, InterruptedException {// 1 获取一行String line = value.toString();// 2 切割String[] words = line.split(" ");// 3 输出for (String word : words) {k.set(word);context.write(k, v);}}
}

(2)编写Reducer类

import java.io.IOException;
import org.apache.hadoop.io.IntWritable;
import org.apache.hadoop.io.Text;
import org.apache.hadoop.mapreduce.Reducer;public class WordCountReducer extends Reducer<Text, IntWritable, Text, IntWritable>{int sum;
IntWritable v = new IntWritable();@Overrideprotected void reduce(Text key, Iterable<IntWritable> values,Context context) throws IOException, InterruptedException {// 1 累加求和sum = 0;for (IntWritable count : values) {sum += count.get();}// 2 输出v.set(sum);context.write(key,v);}
}

(3)编写Driver驱动类

import java.io.IOException;
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.Path;
import org.apache.hadoop.io.IntWritable;
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;public class WordCountDriver {public static void main(String[] args) throws IOException, ClassNotFoundException, InterruptedException {// 1 获取配置信息以及获取job对象Configuration conf = new Configuration();Job job = Job.getInstance(conf);// 2 关联本Driver程序的jarjob.setJarByClass(WordCountDriver.class);// 3 关联Mapper和Reducer的jarjob.setMapperClass(WordCountMapper.class);job.setReducerClass(WordCountReducer.class);// 4 设置Mapper输出的kv类型job.setMapOutputKeyClass(Text.class);job.setMapOutputValueClass(IntWritable.class);// 5 设置最终输出kv类型job.setOutputKeyClass(Text.class);job.setOutputValueClass(IntWritable.class);// 6 设置输入和输出路径FileInputFormat.setInputPaths(job, new Path(args[0]));FileOutputFormat.setOutputPath(job, new Path(args[1]));// 7 提交jobboolean result = job.waitForCompletion(true);System.exit(result ? 0 : 1);}
}

5)本地测试

(1)需要首先配置好HADOOP_HOME变量以及Windows运行依赖
(2)在IDEA/Eclipse上运行程序
在这里插入图片描述
在这里插入图片描述


http://www.ppmy.cn/news/63028.html

相关文章

68元工业级双核A7,全新T113核心板震撼上市!

万象奥科全新T113核心板震撼上市&#xff0c;仅68元、工业级品质、双核A7处理器、外设丰富&#xff0c;诠释极致性价比&#xff01; 参数速递 1.全志T113工业级处理器&#xff0c;主频1.2GHz 2.双核Cortex-A7玄铁C906 RISC-V HiFi4 DSP异构多核 3.内存128MB/256MB/512MB&a…

502 bad gateway是什么意思 502 bad gateway错误解决方法

简单来说 502 是报错类型代码 bad getway 错误的网关&#xff0c;连接超时 我们向服务器器发送请求 由于服务器当前链接太多&#xff0c;导致服务器方面无法给于正常的响应,产生此类报错 您可以尝试清除浏览器缓存 访问一下你的&#xff26;&#xff34;&#xff30;看是否可以…

查看NVIDIA GPU占用率方法

NVIDIA系列文章目录 文章目录 NVIDIA系列文章目录前言一、查看GPU占用率的方法使用终端命令nvidia-smi -l 1查看GPU使用情况 二、解决神经网络训练过程中GPU占用率低的问题 前言 查看GPU占用率方法以及解决神经网络训练过程中GPU占用率低的问题 一、查看GPU占用率的方法 使用…

random — 伪随机数生成器(史上总结最全)

目的&#xff1a;实现几种类型的伪随机数生成器。 random 模块基于 Mersenne Twister 算法提供了一个快速的伪随机数生成器。Mersenne Twister 最初开发用于为蒙特卡洛模拟器生成输入&#xff0c;可生成具有分布均匀&#xff0c;大周期的数字&#xff0c;使其可以广泛用于各种…

无线传感器网络(WSN)中的空穴和边界节点检测(Matlab代码实现)

目录 &#x1f4a5;1 概述 &#x1f4da;2 运行结果 &#x1f389;3 参考文献 &#x1f468;‍&#x1f4bb;4 Matlab代码 &#x1f4a5;1 概述 ​由于无线传感器网络中可能会出现覆盖漏洞,导致网络无法提供高质量的数据,所以需要检测边界节点以准确找到覆盖漏洞进行修复。…

Mermaid流程图

所有流程图都由节点&#xff0c;几何形状和边缘&#xff0c;箭头或线条组成。mermaid代码定义了这些节点和边缘的制作和交互方式。 它还可以容纳不同的箭头类型、多方向箭头以及与子图之间的链接。 1、流程图的方向 TB - 从上到下TD - 自上而下/与上到下相同BT - 从下到上RL -…

数据指标中心业务策略的闭环

分析数据定位业务问题&#xff0c;基于业务理解&#xff0c;确定解决策略&#xff0c;到最终正向的影响业务&#xff0c;整个过程中&#xff0c;业务策略存在两个闭环&#xff1a;逻辑闭环和业务闭环。 逻辑闭环&#xff1a; 数据分析的过程&#xff0c;逻辑上要闭环&#xff…

《python爬虫练习》之随机的User-Agent请求头

1. 背景&#xff1a; 大数据时代&#xff0c;互联网上很多的数据需要被爬取然后进行筛选&#xff0c;就可以被我们所利用&#xff0c;在这个过程中反爬技术也应运而生&#xff0c;互联网之间的攻防战一直在不断升级。那么我们在爬取数据的时候&#xff0c;自然需要进行伪装&am…