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

理论和源代码分析:

一,数据输入格式(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
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值