自定义 InputFormat 步骤| 学习笔记

简介: 快速学习自定义 InputFormat 步骤

开发者学堂课程【Hadoop 分布式计算框架 MapReduce:自定义 InputFormat 步骤】学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址:https://developer.aliyun.com/learning/course/94/detail/1508


自定义 InputFormat 步骤


目录:

一、自定义

二、案例实操

三、需求分析

 

一、自定义

在企业开发中,Hadoop 框架自带的 InputFonmat 类型不能满足所有应用场景,需要自定义 InputFomat 来解决实际问题。

自定义 InputFomat 步骤如下:

(1)自定义一个类继承 FileInputFormat。

(2)改写 RecordReader,实现一次读取一个完整文件封装为 KV。

(3)在输出时使用 SequenceFileOutPutFoumat 输出合并文件。

 

二、案例实操

无论 HDFS 还是 MapReduce,在处理小文件时效率都非常低,但又难免面临处理大量小文件的场景,此时,就需要有相应解决方案。可以自定义 InputFormat 实现小文件的合并。

 

1.需求.

将多个小文件合并成一个 SequenceFile 文件(SequenceFile 文件是 Hadoop 用来存储二进制形式的 key-value 对的文件格式),SequenceFile 里面存储着多个文件,存储的形式为文件路径+名称为 key,文件内容为 value。·

(1)输入数据。

one.txt two.txt three.txt

(2) 期望输出数据

 

三、需求分析

自定义 InputFormat 案例分析 尚硅谷

1、自定义一个类继承 FileInputFormat

(1)重写 isSplitable() 方法,返回 false 不可切割

(2)重写 createRecordReader(),创建自定义的 RecordReader 对象,并初始化

2、改写 RecordReader,实现一次读取一个完整文件封装为 KV

(1)采用 IO 流一次读取一个文件输出到 value 中,因为设置了不可切片,最终把所有文件都封装到了 value 中

(2)获取文件路径信息+名称,并设置 key

3、设置 Driver

//(1)设置输入的 inputFormat

job.setInputFormatClass(WholeFileInputformat.class);

//(2)设置输出的 outputFormat

job.setOutputFormatClass(SequenceFileOutputFormat.class);

相关文章
|
6月前
|
分布式计算 Hadoop Java
MapReduce编程:自定义分区和自定义计数器
MapReduce编程:自定义分区和自定义计数器
82 0
|
1月前
|
Java
java实现从HDFS上下载文件及文件夹的功能,以流形式输出,便于用户自定义保存任何路径下
java实现从HDFS上下载文件及文件夹的功能,以流形式输出,便于用户自定义保存任何路径下
55 2
java实现从HDFS上下载文件及文件夹的功能,以流形式输出,便于用户自定义保存任何路径下
|
28天前
Hadoop-09-HDFS集群 JavaClient 代码上手实战!详细附代码 安装依赖 上传下载文件 扫描列表 PUT GET 进度条显示(二)
Hadoop-09-HDFS集群 JavaClient 代码上手实战!详细附代码 安装依赖 上传下载文件 扫描列表 PUT GET 进度条显示(二)
38 3
|
28天前
|
分布式计算 Java Hadoop
Hadoop-09-HDFS集群 JavaClient 代码上手实战!详细附代码 安装依赖 上传下载文件 扫描列表 PUT GET 进度条显示(一)
Hadoop-09-HDFS集群 JavaClient 代码上手实战!详细附代码 安装依赖 上传下载文件 扫描列表 PUT GET 进度条显示(一)
36 2
|
6月前
|
SQL 分布式计算 Java
Spark学习---SparkSQL(概述、编程、数据的加载和保存、自定义UDFA、项目实战)
Spark学习---SparkSQL(概述、编程、数据的加载和保存、自定义UDFA、项目实战)
352 1
|
6月前
|
消息中间件 关系型数据库 MySQL
SparkStreaming【实例演示】
SparkStreaming【实例演示】
|
6月前
|
分布式计算
MapReduce【自定义InputFormat】
MapReduce【自定义InputFormat】
|
数据采集 分布式计算
34 MAPREDUCE自定义inputFormat
34 MAPREDUCE自定义inputFormat
41 0
|
消息中间件 存储 分布式计算
Spark学习---6、SparkStreaming(SparkStreaming概述、入门、Kafka数据源、DStream转换、输出、关闭)(二)
Spark学习---6、SparkStreaming(SparkStreaming概述、入门、Kafka数据源、DStream转换、输出、关闭)(二)
|
消息中间件 分布式计算 Kafka
Spark学习---6、SparkStreaming(SparkStreaming概述、入门、Kafka数据源、DStream转换、输出、关闭)(一)
Spark学习---6、SparkStreaming(SparkStreaming概述、入门、Kafka数据源、DStream转换、输出、关闭)(一)