KeyValueTextInputFormat使用案例
KeyValueTextInputFormat使用案例
- 需求
- 文件内容
- 案例分析
- 1.需求
- 2.输入数据
- 3.期望输出数据
- 4.Map阶段
- 5.Reduce阶段
- 6.Driver
- 代码实现
- 1.编写Mapper类
- (2)编写Reducer类
- 3.编写Driver类
- 结果截图
需求
统计输入文件中每一行的第一个单词相同的行数。
文件内容
案例分析
1.需求
统计输入文件中每一行的第一个单词相同的行数。
2.输入数据
3.期望输出数据
4.Map阶段
(1)设置key和value
(2)写出
5.Reduce阶段
(1) 汇总
(2) 写出
6.Driver
(1)设置切割符
(2)设置输入格式
代码实现
1.编写Mapper类
package com.atguigu.mr.kv;import java.io.IOException;import org.apache.hadoop.io.IntWritable;
import org.apache.hadoop.io.Text;
import org.apache.hadoop.mapreduce.Mapper;//wo shi banzhang
public class KVTextMapper extends Mapper<Text, Text, Text, IntWritable> {IntWritable v = new IntWritable(1);@Overrideprotected void map(Text key, Text value, Context context)throws IOException, InterruptedException {//封装对象//写出context.write(key, v);//}}
(2)编写Reducer类
package com.atguigu.mr.kv;import java.io.IOException;import org.apache.hadoop.io.IntWritable;
import org.apache.hadoop.io.Text;
import org.apache.hadoop.mapreduce.Reducer;public class KVTextReducer extends Reducer<Text, IntWritable, Text, IntWritable>{IntWritable v = new IntWritable();@Overrideprotected void reduce(Text key, Iterable<IntWritable> values,Reducer<Text, IntWritable, Text, IntWritable>.Context context) throws IOException, InterruptedException {//累加求和int sum = 0;for (IntWritable value : values) {sum +=value.get();}v.set(sum);//写出context.write(key, v);}}
3.编写Driver类
package com.atguigu.mr.kv;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.input.KeyValueLineRecordReader;
import org.apache.hadoop.mapreduce.lib.input.KeyValueTextInputFormat;
import org.apache.hadoop.mapreduce.lib.output.FileOutputFormat;public class KVTextDriver {public static void main(String[] args) throws IOException, ClassNotFoundException, InterruptedException {args = new String[] {"S:\\centos学习笔记\\kvinput","S:\\centos学习笔记\\voutput"};Configuration conf = new Configuration();//设置切割conf.set(KeyValueLineRecordReader.KEY_VALUE_SEPERATOR," ");//获取job对象Job job = Job.getInstance(conf);//设置jar存储路径job.setJarByClass(KVTextDriver.class);//关联mapper和reducer类job.setMapperClass(KVTextMapper.class);job.setReducerClass(KVTextReducer.class);//设置mapper输出的key和value类job.setMapOutputKeyClass(Text.class);job.setMapOutputValueClass(IntWritable.class);//设置最终输出的key和value类型job.setOutputKeyClass(Text.class);job.setOutputValueClass(IntWritable.class);job.setInputFormatClass(KeyValueTextInputFormat.class);//设置输入输出路径FileInputFormat.setInputPaths(job, new Path(args[0]));FileOutputFormat.setOutputPath(job, new Path(args[1]));//提交jobboolean result = job.waitForCompletion(true);System.exit(result? 0 : 1);}}
结果截图
KeyValueTextInputFormat使用案例相关推荐
- hadoop之mapreduce教程+案例学习(二)
第3章 MapReduce框架原理 目录 第3章 MapReduce框架原理 3.1 InputFormat数据输入 3.1.1 切片与MapTask并行度决定机制 3.1.2 Job提交流程源码和切 ...
- 大数据技术之Hadoop(MapReduce)
大数据技术之Hadoop(MapReduce) (作者:大数据研发部) 版本:V1.4 第1章MapReduce入门 map 计算 reduce 规约 1.1 MapReduce定义 Mapreduc ...
- java大数据最全课程学习笔记(6)--MapReduce精通(二)--MapReduce框架原理
目前CSDN,博客园,简书同步发表中,更多精彩欢迎访问我的gitee pages MapReduce精通(二) MapReduce框架原理 MapReduce工作流程 流程示意图 流程详解 上面的流程 ...
- 6. FileInputFormat实现类
文章目录 FilInputFormat实现类 1. TextInputFormat 示例 2. KeyValueTextInputFormat 示例 3. NLineInputFormat 示例 4. ...
- MapReduce 详细教程
文章目录 1. MapReduce 概述 1.1 MapReduce 定义 1.2 MapReduce 优缺点 1.3 MapReduce 核心思想 1.4 MapReduce 进程 1.5 MapR ...
- 一篇文章搞懂fof好友推荐案例
需求 推荐好友的好友. 原始数据: 小明 老王 如花 林志玲 老王 小明 凤姐 如花 小明 李刚 凤姐 林志玲 小明 李刚 凤姐 郭美美 李刚 如花 凤姐 林志玲 郭美美 凤姐 林志玲 凤姐 如花 老 ...
- MapReduce天气案例
需求: 1949-10-01 14:21:02 34c 1949-10-02 14:01:02 36c 1950-01-01 11:21:02 32c 1950-10-01 12:21:02 37c ...
- MapReduce案例
大数据技术之Hadoop(Map-Reduce) 一 MapReduce入门 1.1 MapReduce定义 Mapreduce是一个分布式运算程序的编程框架,是用户开发"基于hadoop的 ...
- MapReduce 运行原理(万字长篇 原理 + 案例)
所有实例都是在本地环境下测试的,无需启动集群! 版本说明: idea:2021.2.2 jdk:1.8 maven:3.8.2(用idea自带的也行) 1. MapReduce 框架原理 运行大致步骤 ...
最新文章
- C++中数字和字符串类型的转换
- HTML中button怎么填充GIF,css3给按钮添加背景渐变动画
- PLSQL登录报错ORA-12154
- 灾难 BZOJ 2815
- 生产数据库更新忙,没有超时
- 2016HUAS暑假集训训练题 F - 简单计算器
- 台式计算机键盘驱动程序,电脑中使用驱动人生检测不到键盘驱动程序怎么解决...
- 微信服务号的模板消息有哪些优势和使用限制?
- 使用HTML5 Canvas API中的clip()方法裁剪区域图像
- mysql 全库备份_MySQL 数据库完全备份
- 制定小目标的软件APP哪款好
- 我对职业规划和未来发展的一些思考
- python期货数据 库_如何用python或者基于vnpy框架将期货tick数据聚合成1分钟数据呢?...
- 霹雳吧啦Wz语义分割学习笔记P2
- 工业过程控制领域中通信
- 计算机专业的学生应当如何规划他的专业学习
- 分享一个自己写的可视化编程工具
- 第一篇 Frankle-Mccan去雾算法
- 大淘客服务器不稳定,日入几百的淘客站被K之后的思考 (二)
- 一键关闭微软自动杀毒软件Windows Defender软件:Defender Control v1.4