自定义 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);

相关文章
|
4月前
|
分布式计算 Hadoop Java
MapReduce编程:自定义分区和自定义计数器
MapReduce编程:自定义分区和自定义计数器
30 0
|
2月前
|
分布式计算 并行计算 大数据
Spark学习---day02、Spark核心编程(RDD概述、RDD编程(创建、分区规则、转换算子、Action算子))(一)
Spark学习---day02、Spark核心编程 RDD概述、RDD编程(创建、分区规则、转换算子、Action算子))(一)
|
7月前
|
BI
quickBI上传文件数据源中的替换文件后端逻辑是怎么实现的
quickBI上传后的所有文件 都会追加到物理表中,那么替换其中一个文件,怎么找到物理表里此原文件对应的数据呢,物理表里是需要建一个关联字段吗
|
2月前
|
分布式计算 Java Scala
Spark学习---day03、Spark核心编程(RDD概述、RDD编程(创建、分区规则、转换算子、Action算子))(二)
Spark学习---day03、Spark核心编程(RDD概述、RDD编程(创建、分区规则、转换算子、Action算子))(二)
|
2月前
|
SQL 分布式计算 Java
Spark学习---SparkSQL(概述、编程、数据的加载和保存、自定义UDFA、项目实战)
Spark学习---SparkSQL(概述、编程、数据的加载和保存、自定义UDFA、项目实战)
126 1
|
9月前
|
存储 分布式计算 并行计算
Spark学习---2、SparkCore(RDD概述、RDD编程(创建、分区规则、转换算子、Action算子))(一)
Spark学习---2、SparkCore(RDD概述、RDD编程(创建、分区规则、转换算子、Action算子))(一)
|
5月前
|
分布式计算
MapReduce【自定义InputFormat】
MapReduce【自定义InputFormat】
|
6月前
|
数据采集 分布式计算
34 MAPREDUCE自定义inputFormat
34 MAPREDUCE自定义inputFormat
18 0
|
9月前
|
存储 分布式计算 对象存储
Spark学习---2、SparkCore(RDD概述、RDD编程(创建、分区规则、转换算子、Action算子))(二)
Spark学习---2、SparkCore(RDD概述、RDD编程(创建、分区规则、转换算子、Action算子))(二)
|
9月前
|
消息中间件 分布式计算 Kafka
Spark学习---6、SparkStreaming(SparkStreaming概述、入门、Kafka数据源、DStream转换、输出、关闭)(一)
Spark学习---6、SparkStreaming(SparkStreaming概述、入门、Kafka数据源、DStream转换、输出、关闭)(一)

相关实验场景

更多