NLineInputFormat案例
NLineInputFormat案例
- 需求
- 1.需求说明
- 2.文件内容
- 案例分析
- 1. 需求
- 2. 输入数据
- 3.期望输出数据
- 4.Map阶段
- 5.Reduce阶段
- 6.Driver
- 代码实现
- 1.编写Mapper类
- 2.编写Reducer类
- 3.编写Driver类
- 结果截图
需求
1.需求说明
对每个单词进行个数统计,要求根据每个输入文件的行数来规定输出多少个切片。此案例要求每三行放入一个切片中。
2.文件内容
案例分析
1. 需求
对每个单词进行个数统计,要求根据每个输入文件的行数来规定输出多少个切片。此案例要求每三行放入一个切片中。
2. 输入数据
3.期望输出数据
4.Map阶段
(1)获取一行
(2)切割
(3)循环写出
5.Reduce阶段
(1)汇总
(2)输出
6.Driver
设置每个切片nputSplit中划分两个条记录
NLineInputFormat.setNumLinesPerSplit(job, 2);
代码实现
1.编写Mapper类
package com.atguigu.mr.nline;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 NLineMapper 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 {//获取一行String line = value.toString();//切割String[] words = line.split(" ");//循环写出for (String word : words) {k.set(word);context.write(k, v);}}}
2.编写Reducer类
package com.atguigu.mr.nline;import java.io.IOException;import org.apache.hadoop.io.IntWritable;
import org.apache.hadoop.io.Text;
import org.apache.hadoop.mapreduce.Reducer;import com.sun.tools.classfile.StackMapTable_attribute.verification_type_info;public class NLineReducer 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.nline;import java.io.IOException;
import java.net.URISyntaxException;import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.Path;
import org.apache.hadoop.io.IntWritable;
import org.apache.hadoop.io.LongWritable;
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.NLineInputFormat;
import org.apache.hadoop.mapreduce.lib.output.FileOutputFormat;public class NLineDriver {public static void main(String[] args) throws IOException, URISyntaxException, ClassNotFoundException, InterruptedException {// 输入输出路径需要根据自己电脑上实际的输入输出路径设置args = new String[] { "S:\\centos学习笔记\\input\\nlinput", "S:\\centos学习笔记\\output\\nloutput" };// 1 获取job对象Configuration configuration = new Configuration();Job job = Job.getInstance(configuration);// 7设置每个切片InputSplit中划分两条记录NLineInputFormat.setNumLinesPerSplit(job, 2);// 8使用NLineInputFormat处理记录数 job.setInputFormatClass(NLineInputFormat.class); // 2设置jar包位置,关联mapper和reducerjob.setJarByClass(NLineDriver.class); job.setMapperClass(NLineMapper.class); job.setReducerClass(NLineReducer.class); // 3设置map输出kv类型job.setMapOutputKeyClass(Text.class); job.setMapOutputValueClass(IntWritable.class); // 4设置最终输出kv类型job.setOutputKeyClass(Text.class); job.setOutputValueClass(IntWritable.class); // 5设置输入输出数据路径FileInputFormat.setInputPaths(job, new Path(args[0])); FileOutputFormat.setOutputPath(job, new Path(args[1])); // 6提交jobjob.waitForCompletion(true); }}
结果截图
NLineInputFormat案例相关推荐
- MapReduce总结
一.MapReduce入门 1.1 MapReduce定义 MapReduce是一个分布式的运算编程框架,是用户开发"基于Hadoop的数据分析应用"的核心框架 MapReduce ...
- MapReduce案例
大数据技术之Hadoop(Map-Reduce) 一 MapReduce入门 1.1 MapReduce定义 Mapreduce是一个分布式运算程序的编程框架,是用户开发"基于hadoop的 ...
- hadoop之mapreduce教程+案例学习(二)
第3章 MapReduce框架原理 目录 第3章 MapReduce框架原理 3.1 InputFormat数据输入 3.1.1 切片与MapTask并行度决定机制 3.1.2 Job提交流程源码和切 ...
- MapReduce 运行原理(万字长篇 原理 + 案例)
所有实例都是在本地环境下测试的,无需启动集群! 版本说明: idea:2021.2.2 jdk:1.8 maven:3.8.2(用idea自带的也行) 1. MapReduce 框架原理 运行大致步骤 ...
- python 网络编程之Socket通信案例消息发送与接收
背景 网络编程是python编程中的一项基本技术.本文将实现一个简单的Socket通信案例消息发送与接收 正文 在python中的socket编程的大致流程图如上所示 我们来首先编写客户端的代码: # ...
- 2021年大数据ELK(十七):Elasticsearch SQL 订单统计分析案例
全网最详细的大数据ELK文章系列,强烈建议收藏加关注! 新文章都已经列出历史文章目录,帮助大家回顾前面的知识重点. 目录 订单统计分析案例 一.案例介绍 二.创建索引 三.导入测试数据 四.统计不同支 ...
- 2021年大数据ELK(十六):Elasticsearch SQL(职位查询案例)
全网最详细的大数据ELK文章系列,强烈建议收藏加关注! 新文章都已经列出历史文章目录,帮助大家回顾前面的知识重点. 目录 职位查询案例 一.查询职位索引库中的一条数据 二.将SQL转换为DSL 三.职 ...
- 2021年大数据ELK(四):Lucene的美文搜索案例
全网最详细的大数据ELK文章系列,强烈建议收藏加关注! 新文章都已经列出历史文章目录,帮助大家回顾前面的知识重点. 目录 系列历史文章 美文搜索案例 一.需求 二.准备工作 1.创建IDEA项目 2. ...
- ❤️让人心跳加速的陌陌案例,大数据必需学会的基础案例!❤️ 【推荐收藏】
全网最详细的大数据HBase文章系列,强烈建议收藏加关注! 已列出历史文章目录,帮助大家回顾前面的知识重点. 目录 系列历史文章 前言 陌陌案例 一.陌陌案例的需求说明 二.陌陌案例中表设计内容 1. ...
最新文章
- android.os.NetworkOnMainThreadException
- Notification with Service Workers push events
- Web Application Stress Tool(WAS)性能测试
- python内置函数sorted(x)的作用是_Python内置filter与sorted函数
- 微型计算机课程介绍,微机原理及应用课程教学大纲教案
- windows 安装 openssl
- oracle动态性能视图和静态,oracle最重要的9个动态性能视图
- 实例22:python
- python流处理框架_Python操作分布式流处理系统Kafka
- fenby C语言 P11
- 基于RGB图像的机器人抓取算法汇总
- 【算法笔记】图文结合彻底搞懂后缀数组
- 知识答题小程序功能总结
- 信工所复试收集材料分享
- 后6位数密码字典生成
- app做好后如何上线_自己做的app从做好到上架需要什么手续或过程?
- PyMQL简单使用【入门CRUD】
- 知乎热议: Java, Go和Python那个前景好?
- html弹性布局平均分配,flex弹性布局.html
- 什么是游戏代理平台?游戏代理平台怎么选?