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

  1. MapReduce总结

    一.MapReduce入门 1.1 MapReduce定义 MapReduce是一个分布式的运算编程框架,是用户开发"基于Hadoop的数据分析应用"的核心框架 MapReduce ...

  2. MapReduce案例

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

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

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

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

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

  5. python 网络编程之Socket通信案例消息发送与接收

    背景 网络编程是python编程中的一项基本技术.本文将实现一个简单的Socket通信案例消息发送与接收 正文 在python中的socket编程的大致流程图如上所示 我们来首先编写客户端的代码: # ...

  6. 2021年大数据ELK(十七):Elasticsearch SQL 订单统计分析案例

    全网最详细的大数据ELK文章系列,强烈建议收藏加关注! 新文章都已经列出历史文章目录,帮助大家回顾前面的知识重点. 目录 订单统计分析案例 一.案例介绍 二.创建索引 三.导入测试数据 四.统计不同支 ...

  7. 2021年大数据ELK(十六):Elasticsearch SQL(职位查询案例)

    全网最详细的大数据ELK文章系列,强烈建议收藏加关注! 新文章都已经列出历史文章目录,帮助大家回顾前面的知识重点. 目录 职位查询案例 一.查询职位索引库中的一条数据 二.将SQL转换为DSL 三.职 ...

  8. 2021年大数据ELK(四):Lucene的美文搜索案例

    全网最详细的大数据ELK文章系列,强烈建议收藏加关注! 新文章都已经列出历史文章目录,帮助大家回顾前面的知识重点. 目录 系列历史文章 美文搜索案例 一.需求 二.准备工作 1.创建IDEA项目 2. ...

  9. ❤️让人心跳加速的陌陌案例,大数据必需学会的基础案例!❤️ 【推荐收藏】

    全网最详细的大数据HBase文章系列,强烈建议收藏加关注! 已列出历史文章目录,帮助大家回顾前面的知识重点. 目录 系列历史文章 前言 陌陌案例 一.陌陌案例的需求说明 二.陌陌案例中表设计内容 1. ...

最新文章

  1. android.os.NetworkOnMainThreadException
  2. Notification with Service Workers push events
  3. Web Application Stress Tool(WAS)性能测试
  4. python内置函数sorted(x)的作用是_Python内置filter与sorted函数
  5. 微型计算机课程介绍,微机原理及应用课程教学大纲教案
  6. windows 安装 openssl
  7. oracle动态性能视图和静态,oracle最重要的9个动态性能视图
  8. 实例22:python
  9. python流处理框架_Python操作分布式流处理系统Kafka
  10. fenby C语言 P11
  11. 基于RGB图像的机器人抓取算法汇总
  12. 【算法笔记】图文结合彻底搞懂后缀数组
  13. 知识答题小程序功能总结
  14. 信工所复试收集材料分享
  15. 后6位数密码字典生成
  16. app做好后如何上线_自己做的app从做好到上架需要什么手续或过程?
  17. PyMQL简单使用【入门CRUD】
  18. 知乎热议: Java, Go和Python那个前景好?
  19. html弹性布局平均分配,flex弹性布局.html
  20. 什么是游戏代理平台?游戏代理平台怎么选?

热门文章

  1. 【 MATLAB 】信号处理工具箱之波形产生函数 rectpuls
  2. idea 端口被占用
  3. 中小型制造企业如何玩转MES系统?
  4. 如何在桌面上安装运行Rancher 2.0
  5. 浅析开源数据库MySQL架构
  6. iOS开发使用Unwind Segue进行返回
  7. 数据量高并发的数据库优化
  8. html 设置div占位符,HTML5+CSS3 一组文本输入框占位符动效
  9. python framework jdon_一天学会Python Web框架(十二)产品管理
  10. 放大缩小html文字,jquery放大缩小文字