Hadoop MapReduce InputFormat基础
有时候你可能想要用不同的方法从input data中读取数据。那么你就需要创建一个自己的InputFormat类。InputFormat是一个只有两个函数的接口。1 public interface InputFormat<K, V> { 2 InputSplit[] getSplits(JobConf job, int numSplits) throws IOException; 3 RecordReader<K, V> getRecordReader(InputSplit split,JobConf job, Reporter reporter) throws IOException; 4 }
getSplits():标记所有的输入数据,然后将他们切分为小的输入数据块,每个Map任务处理一个数据块;getRecordReader():提供一个RecordReader来从给定的数据块中迭代处理数据,然后将数据处理为<key,value>格式。
由于没有人愿意关心怎样将数据块分为小的数据块,你应该继承FileInputFormat类,它用来处理数据的分块。大部分已知的InputFormat就是FileInputFormat的子类。
InputFormat | Description |
---|---|
TextInputFormat |
输入文件中的每一行就是一个记录,Key是这一行的byte offset,而value是这一行的内容。 Key: LongWritable Value: Text |
KeyValueTextInputFormat |
输入文件中每一行就是一个记录,第一个分隔符字符切分每行。在分隔符字符之前的内容为Key,在之后的 为Value。 分隔符变量通过key.value.separator.in.input.line变量设置,默认为(\t)字符。 Key: Text Value: Text |
SequenceFileInputFormat<K,V> |
一个用来读取字符流数据的InputFormat,<Key,Value>为用户自定义的。字符流数据是Hadoop自定义的压缩的二进制数据格式。 它用来优化从一个MapReduce任务的输出到另一个MapReduce任务的输入之间的数据传输过程。 Key: K(用户自定义) Value: V(用户自定义) |
NLineInputFormat |
与TextInputFormat一样,但每个数据块必须保证有且只有N行,mapred.line.input.format.linespermap属性,默认为1,设置为N。 Key: LongWritable value: Text |
FileInputFormat实现getSplits()方法,但是仍然保留getRecordReader()方法为abstract以使其子类实现。FileInputFormat的getSplits()实现试着将输入数据分块大小限制在numSplits值之上,numSplits<数据块<hdfs block sizeFileInputFormat有一些子类可以重载的protected函数,例如isSplitable(),它用来确定你是否可以切分一个块,默认返回为true,表示只要数据块大于hdfs block size,那么它将会被切分。但有时候你不希望切分一个文件,例如某些二进制序列文件不能被切分时,你就需要重载该函数使其返回false。在用FileInputFormat时,你主要的精力应该集中在数据块分解为记录,并且生成<key,value>键值对的RecordReader方法上。1 public interface RecordReader<K, V> { 2 boolean next(K key, V value) throws IOException; 3 K createKey(); 4 V createValue(); 5 6 long getPos() throws IOException; 7 public void close() throws IOException; 8 float getProgress() throws IOException; 9 }
转载于:https://www.cnblogs.com/hellochennan/p/5380720.html
Hadoop MapReduce InputFormat基础相关推荐
- BigData之Hadoop:Hadoop框架(分布式系统基础架构)的简介(两大核心【HDFS存储和MapReduce计算】)、深入理解、下载、案例应用之详细攻略
BigData之Hadoop:Hadoop框架(分布式系统基础架构)的简介(两大核心[HDFS存储和MapReduce计算]).深入理解.下载.案例应用之详细攻略 目录 Hadoop的简介(分布式系统 ...
- MapReduce编程基础
MapReduce编程基础 1. WordCount示例及MapReduce程序框架 2. MapReduce程序执行流程 3. 深入学习MapReduce编程(1) 4. 参考资料及代码下载 & ...
- 实例掌握Hadoop MapReduce
本文旨在帮您快速了解 MapReduce 的工作机制和开发方法,解决以下几个问题: MapReduce 基本原理是什么? MapReduce 的执行过程是怎么样的? MapReduce 的核心流程细节 ...
- Hadoop MapReduce 保姆级吐血宝典,学习与面试必读此文!
Hadoop 涉及的知识点如下图所示,本文将逐一讲解: 本文档参考了关于 Hadoop 的官网及其他众多资料整理而成,为了整洁的排版及舒适的阅读,对于模糊不清晰的图片及黑白图片进行重新绘制成了高清彩图 ...
- 又双叒叕来更新啦!Hadoop———MapReduce篇
文章目录 MapReduce(计算) MapReduce概述 MapReduce定义 MapReduce的优缺点 核心思想 MapReduce计算程序运行时的相关进程 官方WordCount源码 Ma ...
- hadoop MapReduce实例解析
1.MapReduce理论简介 1.1 MapReduce编程模型 MapReduce采用"分而治之"的思想,把对大规模数据集的操作,分发给一个主节点管理下的各个分节点共同完成,然 ...
- Hadoop MapReduce
先看一段代码: package com.abc;import java.io.IOException; import java.util.Iterator; import java.util.Stri ...
- Hadoop之InputFormat数据输入详解
Hadoop之InputFormat数据输入详解 Job提交流程和切片源码详解 FileInputFormat切片机制 CombineTextInputFormat切片机制 InputFormat接口 ...
- python - hadoop,mapreduce demo
Hadoop,mapreduce 介绍 59888745@qq.com 大数据工程师是在Linux系统下搭建Hadoop生态系统(cloudera是最大的输出者类似于Linux的红帽), 把用户的交易 ...
最新文章
- 【Qt】Qt再学习(四):Editable Tree Model Example
- 64位系统下使用ODP.NET 11g的异常
- VTK:单元格内部对象CellsInsideObject用法实战
- DataGridView插入一行数据和用DataTable绑定数据2种方式
- 线程同步--线程间通信
- **加密解密基础、PKI及SSL、创建私有CA**
- Linux系统CentOS 7配置Spring Boot运行环境
- Eclipse 下如何引用另一个项目的资源文件
- 《天天数学》连载19:一月十九日
- iPhone 12包装盒设计曝光,没充电器没耳机实锤?
- 判断完全二叉树(顺序存储)
- TS助手 v3.52 视频网站下载工具,网页视频下载神器
- matlab聚类分析工具箱,matlab聚类工具箱
- ESP8285调试记录
- cs1.6正版僵尸服务器ip,cs1.6僵尸服务器
- Mybatis关联关系
- 获取连接到wifi热点的手机信息。
- Excel无法跨表筛选,也不能多列筛选,要如何突破限制呢?本教材有方法
- html框架自动居中,html 宽度固定并布局居中模板框架
- 20130723 上海OOW第二日