加入收藏 | 设为首页 | 会员中心 | 我要投稿 湖南网 (https://www.hunanwang.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 教程 > 正文

MapReuce中对大数据处理赏罚最吻合的数据名目是什么?

发布时间:2018-09-21 21:45:03 所属栏目:教程 来源:赵钰莹
导读:【新品产上线啦】51CTO播客,随时随地,碎片化进修 在本章的第一章节先容中,我们简朴相识了Mapreduce数据序列化的观念,以及其对付XML和JSON名目并不友爱。本节作为《Hadoop从入门到能干》大型专题的第三章第二节将教各人如安在Mapreduce中行使XML和JSON两

Elephant Bird(https://github.com/kevinweil/elephant-bird)是一个开源项目,包括用于处理赏罚LZOP压缩的有效措施,它有一个可读取JSON的LzoJsonInputFormat,尽量要求输入文件是LZOP-compressed。,但可以将Elephant Bird代码用作本身的JSON InputFormat模板,该模板不具有LZOP compression要求。

此办理方案假定每个JSON记录位于单独的行上。JsonRecordFormat很简朴,除告终构和返回JsonRecordFormat之外什么也没做,以是我们将跳过该代码。JsonRecordFormat向映射器发出LongWritable,MapWritable key/value,个中MapWritable是JSON元素名称及其值的映射。

我们来看看RecordReader的事变道理,它行使LineRecordReader,这是一个内置的MapReduce读取器。要将该行转换为MapWritable,读取器行使json-simple理会器将该行理会为JSON工具,然后迭代JSON工具中的键并将它们与其关联值一路放到MapWritable。映射器在LongWritable中被赋予JSON数据,MapWritable pairs可以响应地处理赏罚数据。

MapReuce中对大数据处理赏罚最吻合的数据名目是什么?

以下表现了JSON工具示例:

MapReuce中对大数据处理赏罚最吻合的数据名目是什么?
MapReuce中对大数据处理赏罚最吻合的数据名目是什么?

该能力假设每行一个JSON工具,以下代码表现了在此示例中行使的JSON文件:

MapReuce中对大数据处理赏罚最吻合的数据名目是什么?

此刻将JSON文件复制到HDFS并运行MapReduce代码。MapReduce代码写入每个JSON key/value对并输出:

MapReuce中对大数据处理赏罚最吻合的数据名目是什么?

写JSON

相同于3.2.1节,编写XML的要领也可用于编写JSON。

Pig

Elephant Bird包括一个JsonLoader和LzoJsonLoader,可以行使它来处理赏罚Pig中的JSON,这些加载器行使基于行的JSON。每个Pig元组都包括该行中每个JSON元素的chararray字段。

Hive

Hive包括一个可以序列化JSON的DelimitedJSONSerDe类,但遗憾的是无法对其举办反序列化,因此无法行使此SerDe将数据加载到Hive中。

总结

此办理方案假定JSON输入的布局为每个JSON工具一行。那么,怎样行使跨多行的JSON工具?GitHub上有一个项目( https://github.com/alexholmes/json-mapreduce)可以在单个JSON文件长举办多个输入拆分,此要领可搜刮特定的JSON成员并检索包括的工具。

你可以查察名为hive-json-serde的Google项目,该项目可以同时支持序列化和反序列化。

正如你所看到的,在MapReduce中行使XML和JSON长短常糟糕的,而且对怎样机关数据有严酷要求。MapReduce对这两种名目标支持也很伟大且轻易堕落,由于它们不得当拆分。显然,必要查察具有内部支持且可拆分的更换文件名目。

下一步是研究更得当MapReduce的伟大文件名目,譬喻Avro和SequenceFile。

3.3 大数据序列化名目

当行使scalar或tabular数据时,非布局化文本名目很有用。诸如XML和JSON之类的半布局化文本名目可以对包罗复合字段或分层数据的伟大数据布局举办建模。可是,当处理赏罚较大数据量时,我们更必要具有紧凑序列化表单的序列化名目,这些名目自己支持分区并具有模式演变成果。

在本节中,我们将较量最得当MapReduce大数据处理赏罚的序列化名目,并跟进怎样将它们与MapReduce一路行使。

3.3.1 较量SequenceFile,Protocol Buffers,Thrift和Avro

按照履历,在选择数据序列化名目时,以下特性很是重要:

  • 代码天生——某些序列化名目具有代码天生浸染的库,应承天生富厚的工具,使更轻易与数据交互。天生的代码还提供了相同安详性等特殊甜头,以确保斲丧者和出产者行使正确的数据范例。
  • 架构演变 - 数据模子跟着时刻的推移而成长,重要的是数据名目支持修改数据模子的需求。模式演变成果应承你添加、修改并在某些环境下删除属性,同时为读和写提供向后和向前兼容性。
  • 说话支持 - 也许必要行使多种编程说话会见数据,主流说话支持数据名目很是重要。
  • 数据压缩 - 数据压缩很是重要,由于可以行使大量数据。而且,抱负的数据名目可以或许在写入和读取时内部压缩息争压缩数据。假如数据名目不支持压缩,那么对付措施员而言,这是一个很大的题目,由于这意味着必需将压缩息争压缩作为数据管道的一部门举办打点(就像行使基于文本的文件名目一样)。
  • 可拆分性 - 较新的数据名目支持多个并行读取器,可读取和处理赏罚大型文件的差异块。文件名目包括同步标志至关重要(可随机搜刮和扫描到下一笔记录开头)。
  • 支持MapReduce和Hadoop生态体系 - 选择的数据名目必需支持MapReduce和其他Hadoop生态体系要害项目,譬喻Hive。假如没有这种支持,你将认真编写代码以使文件名目合用于这些体系。

表3.1较量了风行的数据序列化框架,以相识它们怎样彼此叠加。以下接头提供了有关这些技能的其他配景常识。

MapReuce中对大数据处理赏罚最吻合的数据名目是什么?
表3.1数据序列化框架的成果较量

让我们更具体地看一下这些名目。

SequenceFile

建设SequenceFile名目是为了与MapReduce、Pig和Hive一路行使,因此可以很好地与全部器材集成。弱点首要是缺乏代码天生和版本节制支持,以及有限的说话支持。

Protocol Buffers

(编辑:湖南网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

热点阅读