Hadoop-No.2之标准文件格式
标准文件格式可以指文本格式,也可以指二进制文件类型.前者包括逗号分隔值(Comma-Separated Value,CSV和可扩展的标记语言文本(Extensible Markup Language. XML)格式 , 后者包括图像.
Hadoop最强大的一个功能就是可以存储任何一种格式的数据. 原始的数据格式能够在线访问,数据完全保真.
1 文本数据
Hadoop非常常见的一个应用是日志(如网络日志和服务器日志)存储于分析.文本数据当然也可以是其他很多格式,包括CSV文件和邮件之类的非结构化数据.在Hadoop中存储文本数据时,主要是考虑文件在系统中的组织形式.另外,因为文本文件会非常快速的消耗Hadoop集群的存储空间 ,所以虽好对其压缩.还有一点需要谨记,使用文本格式存储数据会因类型转换带来额外开销
数据的使用方式会影响压缩格式的选择.如果是为了存档,可能会选择压缩率最高的压缩方式.如果数据需要使用MapReduce进行处理,那么可能选择一种支持分片的压缩格式.可分片格式允许Hadoop将文件分成不同分片进行处理,这对数据的高效并行处理至关重要.
在许多(甚至大多数)场景中,运用SequenceFile, Avro等容器格式都能带来益处,因此容器格式是文本等大部分文件类型的优选格式.此外,容易格式还能够支持可分片的压缩.
2 结构化文本数据
XML和JSON这样的结构化格式是文本文件格式中比较特殊的一种. XML和JSON文件比较难分片,Hadoop也没有为这种格式提供内置的InputFormat.在Hadoop中,JSON格式比XML跟俺处理,因为这里没有标记可以标识记录的开始与结束.处理这类格式时,你可以有一下两个选择进行参考:
- 使用类似于Avro的容器格式.将数据转化为Avro的内容,从而为数据存储与数据处理提供更加紧密,有效的方法.
- 使用处理XML或JSON文件的专用库,比如,说到XML, Pig的PiggyBank库(https://cwiki.apache.org/confluence/display/PIG/PiggyBank)中就有XMLLoader可供使用.而JSON则可以利用Elephant Bird 项目 (https://github.com/twitter/elephant-bird)提供的LzoJsonInputFormat.
3 二进制数据
Hadoop中最常见的源数据格式是文本. 但Hadoop也可以处理二进制文件(比如图像).对于Hadoop上的大多数应用场景来说,二进制文件的存储和处理最好能使用Sequencefile之类的容器格式.如果二进制数据的每个分片大雨64MB,则可以考虑使用该二进制数据自己的格式,无需使用容器格式
Hadoop-No.2之标准文件格式的更多相关文章
- Hadoop基础-MapReduce的常用文件格式介绍
Hadoop基础-MapReduce的常用文件格式介绍 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.MR文件格式-SequenceFile 1>.生成SequenceF ...
- hadoop编程小技巧(5)---自定义输入文件格式类InputFormat
Hadoop代码测试环境:Hadoop2.4 应用:在对数据需要进行一定条件的过滤和简单处理的时候可以使用自定义输入文件格式类. Hadoop内置的输入文件格式类有: 1)FileInputForma ...
- hadoop编程小技巧(7)---自己定义输出文件格式以及输出到不同文件夹
代码測试环境:Hadoop2.4 应用场景:当须要定制输出数据格式时能够採用此技巧,包含定制输出数据的展现形式.输出路径.输出文件名称称等. Hadoop内置的输出文件格式有: 1)FileOutpu ...
- hadoop编程小技巧(5)---自己定义输入文件格式类InputFormat
Hadoop代码測试环境:Hadoop2.4 应用:在对数据须要进行一定条件的过滤和简单处理的时候能够使用自己定义输入文件格式类. Hadoop内置的输入文件格式类有: 1)FileInputForm ...
- [hadoop in Action] 第3章 Hadoop组件
管理HDFS中的文件 分析MapReduce框架中的组件 读写输入输出数据 1.HDFS文件操作 [命令行方式] Hadoop的文件命令采取的形式为: hadoop fs -cmd < ...
- hadoop面试100道收集(带答案)
1.列出安装Hadoop流程步骤 a) 创建hadoop账号 b) 更改ip c) 安装Java 更改/etc/profile 配置环境变量 d) 修改host文件域名 e) 安装ssh 配置无密码登 ...
- Hadoop 和 HDInsight:Windows Azure 中的大数据
世界的大数据包含一个庞大而充满活力的生态系统,但一个开放源码项目上面有这一切,那就是 Hadoop 的王朝. Hadoop 是事实上的标准的分布式的数据运算.Hadoop 提供了一个 MapReduc ...
- How to read video frames in hadoop?如何在Hadoop中读取视频帧?
To process specialized file formats (such as video) in Hadoop, you'd have to write a custom InputFor ...
- HBase文件格式演变之路
Apache HBase是Hadoop的分布式开源的存储管理工具,很适合随机实时的io操作. 我们知道,Hadoop的Sequence File是一个顺序读写,批量处理的系统.可是为什么HBase能做 ...
随机推荐
- [AcWing303/304]任务安排2/3
[AcWing303]任务安排2 有 \(N\) 个任务排成一个序列在一台机器上等待执行,它们的顺序不得改变.机器会把这 \(N\) 个任务分成若干批,每一批包含连续的若干个任务.从时刻 \(0\) ...
- [转帖]如何备份及恢复Linux文件权限
如何备份及恢复Linux文件权限 http://embeddedlinux.org.cn/emb-linux/entry-level/201604/10-5337.html 三年前我就干过 chm ...
- Update语句的Output从句结构
原文:Update语句的Output从句结构 一,先看1个列子 ) dbo.Table_1 set status = 'C' --2,选择前3条数据output deleted.id,deleted. ...
- 「java.util.concurrent并发包」之 CAS
一 引言 在JDK 5之前Java语言是靠synchronized关键字保证同步的,这会导致有锁 锁机制存在以下问题: (1)在多线程竞争下,加锁.释放锁会导致比较多的上下文切换和调度延时,引起性能 ...
- Java 反射理解(二)-- 动态加载类
Java 反射理解(二)-- 动态加载类 概念 在获得类类型中,有一种方法是 Class.forName("类的全称"),有以下要点: 不仅表示了类的类类型,还代表了动态加载类 编 ...
- asp.net 8 Request,Response,Server
Request成员: 1.Request.UrlReferrer 获取请求的来源,可以防盗链 Response.Write(Request.Url.ToString());//获取当前请求的URL地址 ...
- 服务端相关知识学习(三)Zookeeper的配置
前面两篇文章介绍了Zookeeper是什么和可以干什么,那么接下来我们就实际的接触一下Zookeeper这个东西,看看具体如何使用,有个大体的感受,后面再描述某些地方的时候也能在大脑中有具体的印象.本 ...
- JavaScript内置排序方法sort实现排序操作
var arr = [10,8,6,9,1,7,2,13,5,1,9]; //sort排序 arr.sort(function(a,b){ //可以改变数组本身的排序方法 return a-b; }) ...
- DevOps与Kubernetes 、容器的关系
近两年,随着容器.Kubernetes 等技术的兴起,DevOps 这个概念被广泛提及并被大量使用. 本文将会从以下几个方面着手,结合实验展现的方式,让读者真正理解 DevOps 的含义. DevOp ...
- 在线程中使用ClientQuery注意的问题
今天遇到奇怪的问题,在线程中建立一个TkbmMWClientQuery的临时对象q,及一个TkbmMWBinaryStreamFormat的临时对象bsf,第一次执行正常,再次执行时一直等待,也不产生 ...