有时候你可能想要用不同的方法从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 size 
FileInputFormat有一些子类可以重载的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基础相关推荐

  1. BigData之Hadoop:Hadoop框架(分布式系统基础架构)的简介(两大核心【HDFS存储和MapReduce计算】)、深入理解、下载、案例应用之详细攻略

    BigData之Hadoop:Hadoop框架(分布式系统基础架构)的简介(两大核心[HDFS存储和MapReduce计算]).深入理解.下载.案例应用之详细攻略 目录 Hadoop的简介(分布式系统 ...

  2. MapReduce编程基础

    MapReduce编程基础 1. WordCount示例及MapReduce程序框架 2.  MapReduce程序执行流程 3.  深入学习MapReduce编程(1) 4. 参考资料及代码下载 & ...

  3. 实例掌握Hadoop MapReduce

    本文旨在帮您快速了解 MapReduce 的工作机制和开发方法,解决以下几个问题: MapReduce 基本原理是什么? MapReduce 的执行过程是怎么样的? MapReduce 的核心流程细节 ...

  4. Hadoop MapReduce 保姆级吐血宝典,学习与面试必读此文!

    Hadoop 涉及的知识点如下图所示,本文将逐一讲解: 本文档参考了关于 Hadoop 的官网及其他众多资料整理而成,为了整洁的排版及舒适的阅读,对于模糊不清晰的图片及黑白图片进行重新绘制成了高清彩图 ...

  5. 又双叒叕来更新啦!Hadoop———MapReduce篇

    文章目录 MapReduce(计算) MapReduce概述 MapReduce定义 MapReduce的优缺点 核心思想 MapReduce计算程序运行时的相关进程 官方WordCount源码 Ma ...

  6. hadoop MapReduce实例解析

    1.MapReduce理论简介 1.1 MapReduce编程模型 MapReduce采用"分而治之"的思想,把对大规模数据集的操作,分发给一个主节点管理下的各个分节点共同完成,然 ...

  7. Hadoop MapReduce

    先看一段代码: package com.abc;import java.io.IOException; import java.util.Iterator; import java.util.Stri ...

  8. Hadoop之InputFormat数据输入详解

    Hadoop之InputFormat数据输入详解 Job提交流程和切片源码详解 FileInputFormat切片机制 CombineTextInputFormat切片机制 InputFormat接口 ...

  9. python - hadoop,mapreduce demo

    Hadoop,mapreduce 介绍 59888745@qq.com 大数据工程师是在Linux系统下搭建Hadoop生态系统(cloudera是最大的输出者类似于Linux的红帽), 把用户的交易 ...

最新文章

  1. 【Qt】Qt再学习(四):Editable Tree Model Example
  2. 64位系统下使用ODP.NET 11g的异常
  3. VTK:单元格内部对象CellsInsideObject用法实战
  4. DataGridView插入一行数据和用DataTable绑定数据2种方式
  5. 线程同步--线程间通信
  6. **加密解密基础、PKI及SSL、创建私有CA**
  7. Linux系统CentOS 7配置Spring Boot运行环境
  8. Eclipse 下如何引用另一个项目的资源文件
  9. 《天天数学》连载19:一月十九日
  10. iPhone 12包装盒设计曝光,没充电器没耳机实锤?
  11. 判断完全二叉树(顺序存储)
  12. TS助手 v3.52 视频网站下载工具,网页视频下载神器
  13. matlab聚类分析工具箱,matlab聚类工具箱
  14. ESP8285调试记录
  15. cs1.6正版僵尸服务器ip,cs1.6僵尸服务器
  16. Mybatis关联关系
  17. 获取连接到wifi热点的手机信息。
  18. Excel无法跨表筛选,也不能多列筛选,要如何突破限制呢?本教材有方法
  19. html框架自动居中,html 宽度固定并布局居中模板框架
  20. 20130723 上海OOW第二日

热门文章

  1. itertools chain
  2. WebAudioAPI 入门
  3. Pandas to_bool
  4. virtualbox 网络配置
  5. 编程语言对比 条件控制语句
  6. matplotlib.patches.Polygon
  7. java part.inlimen_java字符串加密及动手动脑
  8. 批量重置指定域用户密码
  9. java中goto用法源代码,java中goto语句解析12
  10. 高德地图api如何不显示logo_Python爬取高德地图POI数据获取「洗浴推拿指南」