MapReuce中对大数据处理最合适的数据格式是什么?
正如你所看到的,在MapReduce中使用XML和JSON是非常糟糕的,并且对如何布局数据有严格要求。MapReduce对这两种格式的支持也很复杂且容易出错,因为它们不适合拆分。显然,需要查看具有内部支持且可拆分的替代文件格式。 下一步是研究更适合MapReduce的复杂文件格式,例如Avro和SequenceFile。 3.3 大数据序列化格式 当使用scalar或tabular数据时,非结构化文本格式很有效。诸如XML和JSON之类的半结构化文本格式可以对包括复合字段或分层数据的复杂数据结构进行建模。但是,当处理较大数据量时,我们更需要具有紧凑序列化表单的序列化格式,这些格式本身支持分区并具有模式演变功能。 在本节中,我们将比较最适合MapReduce大数据处理的序列化格式,并跟进如何将它们与MapReduce一起使用。 3.3.1 比较SequenceFile,Protocol Buffers,Thrift和Avro 根据经验,在选择数据序列化格式时,以下特征非常重要:
表3.1比较了流行的数据序列化框架,以了解它们如何相互叠加。以下讨论提供了有关这些技术的其他背景知识。 ![]() 表3.1数据序列化框架的功能比较 让我们更详细地看一下这些格式。 SequenceFile 创建SequenceFile格式是为了与MapReduce、Pig和Hive一起使用,因此可以很好地与所有工具集成。缺点主要是缺乏代码生成和版本控制支持,以及有限的语言支持。 Protocol Buffers Protocol Buffers 已被Google大量用于互操作,其优势在于其版本支持二进制格式。缺点是MapReduce(或任何第三方软件)缺乏对读取Protocol Buffers 序列化生成的文件支持。但是,Elephant Bird可以在容器文件中使用Protocol Buffers序列化。 Thrift Thrift是Facebook内部开发的数据序列化和RPC框架,在本地数据序列化格式中不支持MapReduce,但可以支持不同的wire-level数据表示,包括JSON和各种二进制编码。 Thrift还包括具有各种类型服务器的RPC层。本章将忽略RPC功能,并专注于数据序列化。 Avro Avro格式是Doug Cutting创建的,旨在帮助弥补SequenceFile的不足。 Parquet (编辑:西安站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |