Hadoop内置的数据输入\输出格式与RecordReader\RecordWriter(九)

来源:互联网 发布:淘宝的同仁堂是真的吗 编辑:程序博客网 时间:2024/05/21 14:55

理论和源代码分析:

一,数据输入格式(InputFormat)用于描述MapReduce的作业  数据输入规范。MapReduce框架依靠数据输入格式完成输入  规范检查(比如输入文件的目录的检查),对数据文件进行输入分块(InputSplit),以及提供从输入分块中 将数据逐一读出,并转换为,Map过程的输入键值对等功能。最常用的数据输入格式:TextInputFormat和KeyValueTextInputFormat   1,TextInputFormat是系统默认的数据输入格式,可以   将文本文件分块并逐行读入以便Map节点进行处理。读入一行时   所产生的主键key就是当前在整个文本文件中的字节偏移位置,   而value就是该行的内容。   KeyValueTextInputFormat是可将一个按照<key,value>格式逐行   存放的文本文件逐行读出,并自动解析生产相应的的key和value.   对于一个数据输入格式(TextInputFormat和KeyValueTextInputFormat)   ,都需要有一个对应的RecordReader方法。RecordReader主要用于将一个   文件中的数据记录分拆成具体的键值对,传送给Map过程作为键值对   输入参数。每个数据输入格式都有输入格式有一个默认的RecordReader。   1,TextInputFormat的默认RecordReader是LineRecordReader。   2,KeyValueTextInputFormat的默认RecordReader是KeyValueLineRrcordReader二,数据输出格式(OutputFormat)用于描述MapReduce作业的数据输出规范。MapReduce框架依靠数据格式完成输出规范检查(如检查输出目录是否存在)以及提供作业数据输出等功能。    最常用的数据输出格式是TextOutputFormat,也是系统默认的数据输出格式    可以将计算结果以"key+\t+value"的形式输出到文本文件中。    数据输出格式也提供一个对应的RecordWriter,以便系统明确输出结果写入到    文件中的具体格式。TextInputFormat的默认RecordWriter是lineRecordWriter    也是将计算结果以"key+\t+value"的形式输出到文本文件中。

查看KeyValueTextInputFormat源码:
1,点击KeyValueTextInputFormat.class进入源码:
这里写图片描述

2,在KeyValueTextInputFormat类中找到RecordReader方法点击
KeyValueLineRecordReader进入到KeyValueLineRecordReader类
这里写图片描述

3,查看具体的KeyValueLineRecordReader方法:
这里写图片描述

输出数据格式的源码也类似以上的查看,可以根据源码的内容自定义,自己的输入输出格式。

0 0