文档章节

Avro (一)基本类型与模式

为为02
 为为02
发布于 2017/03/28 23:51
字数 1039
阅读 116
收藏 0

Avro 相关概念分析

 Avro (Apache Avro) 是一个独立于编程语言的数据序列化系统. 

Avro由Hadoop之父 Doug Cutting创建发起,旨在解决Hadoop中 Writable 类型缺乏语言的可移植性的不足,使其更容易与除java之外的语言共享数据集. Avro数据使用与编程语言无关的模式定义,且其的代码生成时可选的,也就是说Avro可以对任意指定模式的数据进行读写,即使是其从未见过的数据模式.在Avro里模式通常用json来定义,数据通常采用二进制格式(也可以用JSON或其它格式)编码,并且Avro还为熟悉类c语言的开发人员提供的一种高级语言 Avro IDL 来写模式.Avro 规范明确定义所有的实现都必须支持二进制格式,同时还需要支持其它的Avro特性. Avro有丰富的模式解析能力(schema resolution)能力,如果约束条件定义的足够明细,读数据所使用的模式也无需与写数据所使用的模式相同.Avro还支持数据演化,例如:如果需要将一个新字段加入到已存在的记录中,只需要在以前存在的读取数据的模式中声明这个新字段的信息.新的数据读取的客户端与老客户端非常相似,新客户端依旧能够读取老客户端的数据,同时新客户端可以使用新字段写入新内容.而如果老客户端读取新客户端写入的数据,会忽略新加入的字段并按照之前的数据模式对新数据进行处理, Avro为一系列对象指定了一个类似于Hadoop顺序文件的对象容器格式.Avro数据文件包含元数据项(模式数据存储在其中),因此文件可以自我声明.Avro支持压缩且可进行拆分.avro也可以用于rpc,在客户机与服务器进行握手通信时,就开始同步客户机与服务器的Avro模式(这点已经被优化过,在大部分的通信场景中avro模式不需要真正的作为数据在网络上进行传输).等到同步操作完成之后,客户机与服务器都会相互持有对方的完整模式,这样如果数据中包含未知字段就能轻易的被解析. 综上所述,Avro可以提供:

  • 丰富的数据结构(rich data structures)
  • 持久化存储数据的容器
  • RPC 远程过程调用
  • 轻量级动态语言的集成,可选的代码生成

Avro 数据类型与模式

Avro 定义了少量的基本数据类型,它们可以用于以写模式的方式来构建应用特定的数据结构.基本类型模式示例如下图:

Avro 基本类型

同时Avro也提供了一些复杂类型,模式示例如下:

Avro 复杂类型

Avro 为多种编程语言提供API,API中包含了该语言特定的Avro类型表示,而且一种语言可能有多种表示或映射.所有的语言都支持动态映射,即使运行前不知道具体模式,也可以使用动态映射.在javaAPI中称这种动态映射为"通用"(generic)映射. 另外,java和C++实现可以自动生成代码来表示符合某种Avro模式的数据,java中称这种映射为特殊映射.代码生成能优化数据处理,如果读写数据之前就有一个模式的备份,那么为用户代码生成的类远远要比为通用代码生成的效率要高. java拥有第三种映射,自反映射(reflect mapping,将Avro类型映射到已有的java类型上).它的速度比通用映射和特殊映射都慢,故而不推荐使用.

© 著作权归作者所有

为为02
粉丝 51
博文 44
码字总数 99356
作品 0
海淀
程序员
私信 提问
Impala 表使用 Avro 文件格式(翻译)

Impala 表使用 Avro 文件格式 Cloudera Impala 支持数据文件使用 Avro 文件格式的表。Impala 可以查询 Avro 表,但目前不支持创建和插入数据。对于这些操作,使用 Hive 处理,然后切换回 Im...

weiqingbin
2014/01/20
1K
0
Apache Spark 2.4 内置的 Avro 数据源介绍

Apache Avro 是一种流行的数据序列化格式。它广泛用于 Apache Spark 和 Apache Hadoop 生态系统,尤其适用于基于 Kafka 的数据管道。从 Apache Spark 2.4 版本开始,Spark 为读取和写入 Avro...

Spark
2018/12/11
0
0
Apache Avro as a Built-in Data Source in Apache Spark 2.4

Apache Avro 是一种流行的数据序列化格式。它广泛用于 Apache Spark 和 Apache Hadoop 生态系统,尤其适用于基于 Kafka 的数据管道。从 Apache Spark 2.4 版本开始(参见 Apache Spark 2.4 正...

开源大数据EMR
04/12
0
0
【译】Apache Spark 2.4内置数据源Apache Avro

原文链接: Apache Avro as a Built-in Data Source in Apache Spark 2.4 Apache Avro 是一种流行的数据序列化格式。它广泛使用于 Apache Spark 和 Apache Hadoop 生态中,尤其适用于基于 Ka...

开源大数据
2018/12/05
0
0
Apache Avro 1.8.1 发布

Apache Avro 1.8.1 发布了,Avro(读音类似于[ævrə])是Hadoop的一个子项目,由Hadoop的 创始人Doug Cutting(也是Lucene,Nutch等项目的创始人)牵头开发。Avro是一个数据序列化系统,设计...

oschina
2016/05/24
3.8K
0

没有更多内容

加载失败,请刷新页面

加载更多

64.监控平台介绍 安装zabbix 忘记admin密码

19.1 Linux监控平台介绍 19.2 zabbix监控介绍 19.3/19.4/19.6 安装zabbix 19.5 忘记Admin密码如何做 19.1 Linux监控平台介绍: 常见开源监控软件 ~1.cacti、nagios、zabbix、smokeping、ope...

oschina130111
昨天
64
0
当餐饮遇上大数据,嗯真香!

之前去开了一场会,主题是「餐饮领袖新零售峰会」。认真听完了餐饮前辈和新秀们的分享,觉得获益匪浅,把脑子里的核心纪要整理了一下,今天和大家做一个简单的分享,欢迎感兴趣的小伙伴一起交...

数澜科技
昨天
26
0
DNS-over-HTTPS 的下一代是 DNS ON BLOCKCHAIN

本文作者:PETER LAI ,是 Diode 的区块链工程师。在进入软件开发领域之前,他主要是在做工商管理相关工作。Peter Lai 也是一位活跃的开源贡献者。目前,他正在与 Diode 团队一起开发基于区块...

红薯
昨天
43
0
CC攻击带来的危害我们该如何防御?

随着网络的发展带给我们很多的便利,但是同时也带给我们一些网站安全问题,网络攻击就是常见的网站安全问题。其中作为站长最常见的就是CC攻击,CC攻击是网络攻击方式的一种,是一种比较常见的...

云漫网络Ruan
昨天
27
0
实验分析性专业硕士提纲撰写要点

为什么您需要研究论文的提纲? 首先当您进行研究时,您需要聚集许多信息和想法,研究论文提纲可以较好地组织你的想法, 了解您研究资料的流畅度和程度。确保你写作时不会错过任何重要资料以此...

论文辅导员
昨天
44
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部