整套大数据学习资料(视频+笔记)百度网盘无门槛下载:http://www.edu360.cn/news/content?id=3377

 分类:hadoop

4.4.8使用Avro MapReduce进行排序

在本节中我们利用Avro的排序能力,并结合使用MapReduce写一个程序来 对Avro数据文件进行排序(范例4-13)。 范例4-13•对Avro数据文件进行排序的MapReduce程序 public class AvroSort ex...

12℃ 0评论

4.4.7关于Avro MapReduce

Avro提供了很多类,以便对Avro数据运行MapReduce程序。例如,org.apache.avro.mapreduce包中的AvroMapper类和AvroReducer类是Hadoop规范(旧版)中的Mapper和Reducer类。它们去除了作为输入和 输出的键/值对的不...

14℃ 0评论

4.4.6排列顺序

Avro定义了对象的排列顺序。Avro大多数类型的排列顺序与用户的期望符合,例如,数值型按照数值的升序进行排列。其他的就没有那么巧妙了。 例如,枚举通过符号的定义而非符号字符串的值来排序。 除了 record之外,所有类型均按照Avro规范中预先定义的规则来排序,&nb...

14℃ 0评论

4.4.5模式的解析

在选择的时候,读加数据的模式(reader的模式)可以不同于我们用于写入数据的模式(writer的模式)。这非常有用,因为它意味着模式演化。例如,为了便于说明,我们考虑新增一个description字段,形成一个新的模式: {     ...

14℃ 0评论

4.4.4互操作性

为了说明Avro的语言互操作性,让我们试着用一种语言(Python)来写入数据文件,用另一种语言来读取这个文件。 关于 PythonAPI 范例4-10中的程序从标准输入中读取由逗号分隔的字符串,并将它们以StringPair记录的方式写入Avro数据文件。与写数据文件...

12℃ 0评论

4.4.3Avro数据文件

Avro的对象容器文件格式主要用于存储Avro对象序列。这与Hadoop顺序文件的设计非常相似。主要区别在于Avro数据文件主要是面向跨语言使用而设计的,所以,可以用Python写入文件,而用C语言来读取文件。 数据文件的头部分包含元数据,包括一个Avro模式和一个sync ma...

13℃ 0评论

4.4.2内存中的序列化和反序列化

Avro为序列化和反序列化提供了API,如果想把Avro集成到现有系统(比如已定义帧格式的消息系统),这些API函数就很有用。其他情况,请考虑使用Avro的数据文件格式。 让我们写一个Java程序从数据流读/写Avro数据。首先以一个简单的Avro 模式为例,它用于表示...

14℃ 0评论

4.4.1. Avro数据类型和模式

Avro定义了少量数据基本类型,它们可用于以写模式的方式来构建应用特定的数据结构。考虑到互操作性,其实现必须支持所有的Avro类型。 表4-9列举了 Avro的基本类型。每个基本类型还可以使用更冗长的形式和使用type属性来指定,示例如下: {"type&qu...

12℃ 0评论

4.4Avro

Apache Avro(http://avro.apache.org/)是一个独立于编程语言的数据序列化系统。该项目由Doug Cutting(Hadoop之父)创建,旨在解决Hadoop中 Writable类型的不足:缺乏语言的可移植性。拥有一个可...

11℃ 0评论

4.3 序列化框架

尽管大多数MapReduce程序使用的都是Writable类型的键和值,但这并不是MapReduce API强制使用的。事实上,可以使用任何类型,只要能有一种机制对每个类型进行类型与二进制表示的来回转换。 为了支持这一机制,Hadoop有一个针对可替换序列化框架(ser...

13℃ 0评论

4.3.3. 实现定制的Writable集合

Hadoop有一套非常有用的Writable实现可以满足大部分需求,但在有些情况下,我们需要根据自己的需求构造一个新的实现。有了定制的Writable类型,就可以完全控制二进制表示和排序顺序。由于Writable 是MapReduce数据路径的核心,所以调整二进制表示能对性能产生...

11℃ 0评论

4.3.2. Writable类

Hadoop自带的org.apache.hadoop.io包中有广泛的Writable类可供选 择。它们形成如图4-1所示的层次结构。   图4-1. Writable类的层次结构 Java基本类型的Writable封装器 Writable类对Java基本类型(参见表...

12℃ 0评论

4.3.1. Writable 接口

Writable接口定义了两个方法:一个将其状态写到DataOutput二进制流, 另一个从Datalnput二进制流读取状态: package org.apache.hadoop.io; import java.io.DataOutput; ...

14℃ 0评论

4.3. 序列化

序列化(serialization)是指将结构化对象转化为字节流以便在网络上传输或写到磁盘进行永久存储的过程。反序列化(deserialization)是指将字节流转回结构化对象的逆过程。 序列化在分布式数据处理的两大领域经常出现:进程间通信和永久存储。 在Hadoop中,系统中...

14℃ 0评论

4.2.3在MapReduce中使用压缩

前面讲到通过 CompressionCodecFactory 来推断 CompressionCodec 时指出,如果输入文件是压缩的,那么在根据文件扩展名推断出相应的codec 后,MapReduce会在读取文件时自动解压缩文件。 要想压缩MapReduce作...

11℃ 0评论