自定义 RecordReader

简介: 自定义 RecordReader

RecordReader 类是实际用来加载数据并把数据转换为适合 Mapper 读取的键值对,RecordReader 由实现类自己定义。自定义 RecordReader 的主要实现方法有以下几个:


publicabstractclassRecordReader<KEYIN, VALUEIN>implementsCloseable {
// 初始化,如果在构造函数中初始化了,那么该方法可以为空publicabstractvoidinitialize(InputSplitsplit, TaskAttemptContextcontext) throwsIOException, InterruptedException;
//是否存在下一个key/value,如果存在返回true,否则返回falsepublicabstractbooleannextKeyValue() throwsIOException, InterruptedException;
// 获取当前keypublicabstractKEYINgetCurrentKey() throwsIOException, InterruptedException;
// 获取当前valuepublicabstractVALUEINgetCurrentValue() throwsIOException, InterruptedException;
// 获取进度信息publicabstractfloatgetProgress() throwsIOException, InterruptedException;
// 关闭资源publicabstractvoidclose() throwsIOException;
}

 RecordReader 会在输入块上被重复的调用直到整个输入块被处理完毕,每一次调用 RecordReader 都会调用 Mapper 的 `map()`方法。


 综上所述,实现自定义输出格式的具体步骤为:


 (1)定义一个类继承 InputFormat 的类,重写 `createRecordReader()` 方法,如果需要还可以重写 `isSplitable()`来设置是否切片;


 (2)定义一个类继承 RecordReader 类,实现一次读取一个完整文件封装为KV类型。











相关文章
|
SQL 数据库连接 数据库
使用自定义的类CSetODBC(二)
使用自定义的类CSetODBC(二)
使用自定义的类CSetODBC(一)
使用自定义的类CSetODBC(一)
|
6月前
|
存储 弹性计算 运维
自定义问候语
【4月更文挑战第30天】
53 0
|
6月前
|
存储 Python
自定义模板过滤器
自定义模板过滤器
39 1
|
6月前
|
Python
默认的模板配置
默认的模板配置。
30 1
|
Unix 关系型数据库 程序员
自定义伟大👑
C语言作为一种经典而强大的编程语言,在计算机科学领域有着广泛的应用。它的简洁性、高效性以及跨平台特性使得C语言成为了开发系统级软件、嵌入式系统以及大规模应用程序的首选。本文将介绍C语言的起源和发展,分析其特点和优势,同时讨论一些常见的应用场景和实例
|
6月前
Qt表格中的自定义编辑组件---------------自定义代理QStyledItemDelegate
Qt表格中的自定义编辑组件---------------自定义代理QStyledItemDelegate
76 5
|
Java Apache Maven
获取自定义配置的值|学习笔记
快速学习获取自定义配置的值
|
监控 NoSQL Java
自定义 Hea1thIndicator |学习笔记
快速学习自定义 Hea1thIndicator