Hadoop OutputFormat 介绍
来源:互联网 发布:域名购买是永久的吗 编辑:程序博客网 时间:2024/05/19 17:23
Hadoop常常被用作大型数据处理生态系统中的一部分。它的优势在于能够批量地处理大量数据,并将结果以最好的方式与其他系统相集成。从高层次角度来看,整个过程就是Hadoop接收输入文件、使用自定义转换(Map-Reduce步骤)获得内容流,以及将输出文件的结果写回磁盘。上个月InfoQ展示了怎样在第一个步骤中,使用InputFormat类来更好地对接收输入文件进行控制。而在本文中,我们将同大家一起探讨怎样自定义最后一个步骤——即怎样写入输出文件。OutputFormat将Map/Reduce作业的输出结果转换为其他应用程序可读的方式,从而轻松实现与其他系统的互操作。为了展示OutputFormts的实用性,我们将用两个例子进行讨论:如何拆分作业结果到不同目录以及如何为提供快速键值查找的服务写入文件。
OutputFormats是做什么的?
OutputFormt接口决定了在哪里以及怎样持久化作业结果。Hadoop为不同类型的格式提供了一系列的类和接口,实现自定义操作只要继承其中的某个类或接口即可。你可能已经熟悉了默认的OutputFormat,也就是TextOutputFormat,它是一种以行分隔,包含制表符界定的键值对的文本文件格式。尽管如此,对多数类型的数据而言,如再常见不过的数字,文本序列化会浪费一些空间,由此带来的结果是运行时间更长且资源消耗更多。为了避免文本文件的弊端,Hadoop提供了SequenceFileOutputformat,它将对象表示成二进制形式而不再是文本文件,并将结果进行压缩。下面是Hadoop提供的类层次结构:
- FileOutputFormat(实现OutputFormat接口)—— 所有OutputFormats的基类
- MapFileOutputFormat —— 一种使用部分索引键的格式
- SequenceFileOutputFormat —— 二进制键值数据的压缩格式
- SequenceFileAsBinaryOutputFormat —— 原生二进制数据的压缩格式
- TextOutputFormat —— 以行分隔、包含制表符定界的键值对的文本文件格式
- MultipleOutputFormat —— 使用键值对参数写入文件的抽象类
- MultipleTextOutputFormat —— 输出多个以标准行分割、制表符定界格式的文件
- MultipleSequenceFileOutputFormat —— 输出多个压缩格式的文件
OutputFormat提供了对RecordWriter的实现,从而指定如何序列化数据。 RecordWriter类可以处理包含单个键值对的作业,并将结果写入到OutputFormat中准备好的位置。RecordWriter的实现主要包括两个函数:“write”和“close”。“write”函数从Map/Reduce作业中取出键值对,并将其字节写入磁盘。LineRecordWriter是默认使用的RecordWriter,它是前面提到的TextOutputFormat的一部分。它写入的内容包括:
- 键(key)的字节 (由getBytes()函数返回)
- 一个用以定界的制表符
- 值(value)的字节(同样由getBytes()函数返回)
- 一个换行符
“close”函数会关闭Hadoop到输出文件的数据流。
我们已经讨论了输出数据的格式,下面我们关心的问题是数据存储在何处?同样,你或许看到过某个作业的输出结果会以多个“部分”文件的方式存储在输出目录中,如下:
|-- output-directory| |-- part-00000| |-- part-00001| |-- part-00002| |-- part-00003| |-- part-00004 '-- part-00005
- Hadoop OutputFormat 介绍
- 探索Hadoop outputFormat
- Hadoop OutputFormat浅析
- Hadoop Outputformat浅析
- Hadoop:InputFormat和OutputFormat
- 自定义OutputFormat--Hadoop
- OutPutFormat介绍 (一)
- Hadoop Map/Reduce OutputFormat概念
- Hadoop的InputFormat和OutputFormat
- hadoop 自定义inputformat和outputformat
- OutputFormat类——Hadoop
- OutputFormat类——Hadoop
- Hadoop开发常用的InputFormat和OutputFormat
- Hadoop开发常用的InputFormat和OutputFormat
- Hadoop开发常用的InputFormat和OutputFormat
- Hadoop开发常用的InputFormat和OutputFormat
- Hadoop中常用的InputFormat,OutPutFormat类
- Hadoop OutputFormat浅析 <转>
- 机器学习算法集锦:从贝叶斯到深度学习及各自优缺点
- Hat’s Words (字典树 + 智能指针shared_ptr)
- OpenCV3.2计算视差图的流程,没有找到核心算法
- form 表单提交input信息 回车报错405
- CSS如何只改变父元素背景透明度不改变子元素透明度
- Hadoop OutputFormat 介绍
- 写一个简单的存储过程
- Jquery(四)
- mybatis做like模糊查询
- android studio 导入aar (阿里百川 hotfix aar 导入)
- 人脸识别和人脸检测的区别
- Android 调用系统相机拍摄获取照片的两种方法实现实例
- Opencv2.4.9 vs2013永久配置 绝对路径
- 安装及运行openface的大坑