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使用案例相关推荐

  1. hadoop之mapreduce教程+案例学习(二)

    第3章 MapReduce框架原理 目录 第3章 MapReduce框架原理 3.1 InputFormat数据输入 3.1.1 切片与MapTask并行度决定机制 3.1.2 Job提交流程源码和切 ...

  2. 大数据技术之Hadoop(MapReduce)

    大数据技术之Hadoop(MapReduce) (作者:大数据研发部) 版本:V1.4 第1章MapReduce入门 map 计算 reduce 规约 1.1 MapReduce定义 Mapreduc ...

  3. java大数据最全课程学习笔记(6)--MapReduce精通(二)--MapReduce框架原理

    目前CSDN,博客园,简书同步发表中,更多精彩欢迎访问我的gitee pages MapReduce精通(二) MapReduce框架原理 MapReduce工作流程 流程示意图 流程详解 上面的流程 ...

  4. 6. FileInputFormat实现类

    文章目录 FilInputFormat实现类 1. TextInputFormat 示例 2. KeyValueTextInputFormat 示例 3. NLineInputFormat 示例 4. ...

  5. MapReduce 详细教程

    文章目录 1. MapReduce 概述 1.1 MapReduce 定义 1.2 MapReduce 优缺点 1.3 MapReduce 核心思想 1.4 MapReduce 进程 1.5 MapR ...

  6. 一篇文章搞懂fof好友推荐案例

    需求 推荐好友的好友. 原始数据: 小明 老王 如花 林志玲 老王 小明 凤姐 如花 小明 李刚 凤姐 林志玲 小明 李刚 凤姐 郭美美 李刚 如花 凤姐 林志玲 郭美美 凤姐 林志玲 凤姐 如花 老 ...

  7. 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 ...

  8. MapReduce案例

    大数据技术之Hadoop(Map-Reduce) 一 MapReduce入门 1.1 MapReduce定义 Mapreduce是一个分布式运算程序的编程框架,是用户开发"基于hadoop的 ...

  9. MapReduce 运行原理(万字长篇 原理 + 案例)

    所有实例都是在本地环境下测试的,无需启动集群! 版本说明: idea:2021.2.2 jdk:1.8 maven:3.8.2(用idea自带的也行) 1. MapReduce 框架原理 运行大致步骤 ...

最新文章

  1. C++中数字和字符串类型的转换
  2. HTML中button怎么填充GIF,css3给按钮添加背景渐变动画
  3. PLSQL登录报错ORA-12154
  4. 灾难 BZOJ 2815
  5. 生产数据库更新忙,没有超时
  6. 2016HUAS暑假集训训练题 F - 简单计算器
  7. 台式计算机键盘驱动程序,电脑中使用驱动人生检测不到键盘驱动程序怎么解决...
  8. 微信服务号的模板消息有哪些优势和使用限制?
  9. 使用HTML5 Canvas API中的clip()方法裁剪区域图像
  10. mysql 全库备份_MySQL 数据库完全备份
  11. 制定小目标的软件APP哪款好
  12. 我对职业规划和未来发展的一些思考
  13. python期货数据 库_如何用python或者基于vnpy框架将期货tick数据聚合成1分钟数据呢?...
  14. 霹雳吧啦Wz语义分割学习笔记P2
  15. 工业过程控制领域中通信
  16. 计算机专业的学生应当如何规划他的专业学习
  17. 分享一个自己写的可视化编程工具
  18. 第一篇 Frankle-Mccan去雾算法
  19. 大淘客服务器不稳定,日入几百的淘客站被K之后的思考 (二)
  20. 一键关闭微软自动杀毒软件Windows Defender软件:Defender Control v1.4

热门文章

  1. 【 MATLAB 】eps (浮点相对精度)简介
  2. Mac卸载mysql并安装mysql升级到8.0.13版本
  3. SSH免密登录(内含批量配置脚本)
  4. 响应式Spring Cloud初探
  5. ssh服务常见问题及其解决办法
  6. 前端学习 -- Css -- 伪元素
  7. 初创公司MongoDB最佳实践策略和躲坑秘笈
  8. vSphere+Openfiler备忘录
  9. android广告平台刷量,数据显示:Android平台广告营收首超iOS
  10. Word中分节符的作用