网易首页 > 网易号 > 正文 申请入驻

大数据开发之WordCount案例实操步骤

0
分享至

1.需求

在给定的文本文件中统计输出每一个单词出现的总次数

(1)输入数据

(2)期望输出数据

atguigu 2

banzhang 1

cls 2

hadoop 1

jiao 1

ss 2

xue 1

2.需求分析

按照MapReduce编程规范,分别编写Mapper,Reducer,Driver,如图4-2所示。

3.环境准备

(1)创建maven工程

(2)在pom.xml文件中添加如下依赖


junit
junit
RELEASE

org.apache.logging.log4j
log4j-core
2.8.2

org.apache.hadoop
hadoop-common
2.7.2

org.apache.hadoop
hadoop-client
2.7.2

org.apache.hadoop
hadoop-hdfs
2.7.2

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

log4j.rootLogger=INFO, stdout

log4j.appender.stdout=org.apache.log4j.ConsoleAppender

log4j.appender.stdout.layout=org.apache.log4j.PatternLayout

log4j.appender.stdout.layout.ConversionPattern=%d %p [%c] – %m%n

log4j.appender.logfile=org.apache.log4j.FileAppender

log4j.appender.logfile.File=target/spring.log

log4j.appender.logfile.layout=org.apache.log4j.PatternLayout

log4j.appender.logfile.layout.ConversionPattern=%d %p [%c] – %m%n

4.编写程序

(1)编写Mapper类

package com.atguigu.mapreduce;

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

{

Text k = new Text();

IntWritable v = new IntWritable(1);

@Override

protected 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类

package com.atguigu.mapreduce.wordcount;

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

{

int sum;

IntWritable v = new IntWritable();

@Override

protected void reduce(Text key, Iterable

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驱动类

package com.atguigu.mapreduce.wordcount;

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 获取配置信息以及封装任务

Configuration configuration = new Configuration();

Job job = Job.getInstance(configuration);

// 2 设置jar加载路径

job.setJarByClass(WordcountDriver.class);

// 3 设置map和reduce类

job.setMapperClass(WordcountMapper.class);

job.setReducerClass(WordcountReducer.class);

// 4 设置map输出

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 提交

boolean result = job.waitForCompletion(true);

System.exit(result ? 0 : 1);

}

}

5.本地测试

(1)如果电脑系统是win7的就将win7的hadoop jar包解压到非中文路径,并在Windows环境上配置HADOOP_HOME环境变量。如果是电脑win10操作系统,就解压win10的hadoop jar包,并配置HADOOP_HOME环境变量。

注意:win8电脑和win10家庭版操作系统可能有问题,需要重新编译源码或者更改操作系统。

(2)启动Hadoop集群

6.集群上测试

(0)用maven打jar包,需要添加的打包插件依赖

注意:标记红颜色的部分需要替换为自己工程主类



maven-compiler-plugin
2.3.2
1.8
1.8

maven-assembly-plugin

jar-with-dependencies

com.atguigu.mr.WordcountDriver


make-assembly
package
single


注意:如果工程上显示红叉。在项目上右键->maven->update project即可。

(1)将程序打成jar包,然后拷贝到Hadoop集群中

步骤详情:右键->Run as->maven install。等待编译完成就会在项目的target文件夹中生成jar包。如果看不到。在项目上右键-》Refresh,即可看到。修改不带依赖的jar包名称为wc.jar,并拷贝该jar包到Hadoop集群。

(2)启动Hadoop集群

(3)执行WordCount程序

[atguigu@hadoop102 software]$ hadoop jar wc.jar

com.atguigu.wordcount.WordcountDriver /user/atguigu/input /user/atguigu/output

文章转载链接:http://www.atguigu.com/jsfx/11386.html

特别声明:以上内容(如有图片或视频亦包括在内)为自媒体平台“网易号”用户上传并发布,本平台仅提供信息存储服务。

Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.

相关推荐
热点推荐
大家认同吗?男子离婚后,再次接前妻回家复合,该不该介意?

大家认同吗?男子离婚后,再次接前妻回家复合,该不该介意?

雅清故事汇
2024-06-25 16:52:27
美记:篮网想要本届选秀权 并愿意交易卡梅隆-约翰逊&芬尼-史密斯

美记:篮网想要本届选秀权 并愿意交易卡梅隆-约翰逊&芬尼-史密斯

直播吧
2024-06-27 04:12:19
谢霆锋43岁还有冰块腹肌!花1年肉体改造 曝关键:不然运动都没用

谢霆锋43岁还有冰块腹肌!花1年肉体改造 曝关键:不然运动都没用

ETtoday星光云
2024-06-26 10:26:08
云南一男子抱着妻子从25楼跳下,死前留遗书:生活已没任何期望

云南一男子抱着妻子从25楼跳下,死前留遗书:生活已没任何期望

安妮Emotiong
2024-06-20 21:47:40
俄罗斯最大的敌人或许不是乌克兰,而是他们

俄罗斯最大的敌人或许不是乌克兰,而是他们

南文军武
2024-06-25 08:15:02
江苏新沂农商行原党委书记、董事长王良玉离任约7年后被查

江苏新沂农商行原党委书记、董事长王良玉离任约7年后被查

澎湃新闻
2024-06-26 18:10:33
中方截获美军机在南海投放的潜艇探测器

中方截获美军机在南海投放的潜艇探测器

财联社
2024-06-26 18:46:10
笑麻了,刘亦菲称四段感情最爱方协文,网友评论区笑翻天

笑麻了,刘亦菲称四段感情最爱方协文,网友评论区笑翻天

开玩笑的水母
2024-06-26 11:20:09
奇才开拓者1换5交易达成:阿夫迪亚布罗格登互换 波特兰造青年军

奇才开拓者1换5交易达成:阿夫迪亚布罗格登互换 波特兰造青年军

罗说NBA
2024-06-27 07:14:06
北京一场高温,让120万新能源车主苦不堪言,新能源汽车何去何从

北京一场高温,让120万新能源车主苦不堪言,新能源汽车何去何从

户外小阿隋
2024-06-26 15:48:34
首次:乌克兰海马斯导弹成功袭击俄罗斯联邦安全局!

首次:乌克兰海马斯导弹成功袭击俄罗斯联邦安全局!

项鹏飞
2024-06-25 16:14:57
欧洲杯16强全部落位!淘汰赛将于北京时间6月30日开始

欧洲杯16强全部落位!淘汰赛将于北京时间6月30日开始

懂球帝
2024-06-27 05:06:10
广州海珠区创办39年幼儿园终止办学,招生不理想,在册幼儿仅59人

广州海珠区创办39年幼儿园终止办学,招生不理想,在册幼儿仅59人

小义了不休
2024-06-26 20:44:03
Fischer:多支球队有意奇才前锋基斯珀特

Fischer:多支球队有意奇才前锋基斯珀特

直播吧
2024-06-27 08:17:12
这人气!阿根廷vs智利现场观众81106人,远超欧洲/美洲杯所有比赛

这人气!阿根廷vs智利现场观众81106人,远超欧洲/美洲杯所有比赛

直播吧
2024-06-26 13:06:11
云南如今房价最高的县,曾是全国“最穷县”

云南如今房价最高的县,曾是全国“最穷县”

暖心的小屋
2024-06-27 01:14:18
Navicat数据库软件免费了!推出Navicat Premium Lite:支持MySQL、Redis等

Navicat数据库软件免费了!推出Navicat Premium Lite:支持MySQL、Redis等

快科技
2024-06-26 17:33:11
国家发展改革委:引导各类资本摒弃“急功近利、快进快出、挣快钱”的浮躁心态

国家发展改革委:引导各类资本摒弃“急功近利、快进快出、挣快钱”的浮躁心态

封面新闻
2024-06-26 17:14:34
影响征信!你可能被纳入失信名单!或每日缴滞纳金!倒计时……

影响征信!你可能被纳入失信名单!或每日缴滞纳金!倒计时……

祥顺财税俱乐部
2024-06-26 09:03:16
日最高气温达40℃以上 建议停止室外露天作业

日最高气温达40℃以上 建议停止室外露天作业

北青网-北京青年报
2024-06-27 00:20:34
2024-06-27 08:40:49
IT爱好者小尚
IT爱好者小尚
分享IT教育类信息
630文章数 55关注度
往期回顾 全部

科技要闻

OpenAI在国内的两条应用之路走不通了?

头条要闻

福建武平中考前遇暴雨 中学泡2米洪水中百余学生被困

头条要闻

福建武平中考前遇暴雨 中学泡2米洪水中百余学生被困

体育要闻

战胜心中的魔鬼,36岁的他上演欧洲杯首秀

娱乐要闻

冯绍峰带儿子看舞台剧,想想更像妈妈

财经要闻

曹远征:不能被"产能过剩"的概念所困惑

汽车要闻

37.99万起坐拥"陆地空客" 翼真L380上市

态度原创

本地
旅游
教育
数码
公开课

本地新闻

冷知识:东北雪糕才是最早的网红雪糕

旅游要闻

7月1日起沙特将成为中国公民出境团队游目的地

教育要闻

实在有点太卑微下头无担当,南医大救人被罚教授是留学生举报

数码要闻

基于SiliconMotion SM2508控制器的更实用PCIe 5.0 SSD今年起出货

公开课

连中三元是哪三元?

无障碍浏览 进入关怀版