Apache Avro简介
目录
介绍
Schema
与其他系统的比较
本文翻译自:http://avro.apache.org/docs/current/index.html
更多信息请查阅:http://avro.apache.org/docs/current/index.html
介绍
Apache Avro™是一个数据序列化系统:
Avro提供:
- 丰富的数据结构。
- 一种紧凑,快速的二进制数据格式。
- 容器文件,用于存储持久性数据。
- 远程过程调用(RPC)。
- 与动态语言的简单集成。 读取或写入数据文件,使用或实现RPC协议均不需要代码生成。 代码生成是可选的优化,仅值得为静态类型的语言实现。
Schema
Avro依赖于schema。读取Avro数据时,写入数据时使用的schema会一直存在。这样就可以在没有每个值开销的情况下写入每个数据(也就是一批数据使用一个schema,不是每个值一个),从而使序列化既快又小。由于有schema的数据是完全自描述的,因此这也便于使用动态脚本语言。
将Avro数据存储在文件中时,其schema也会随之存储,因此以后任何程序都可以处理文件。如果读取数据的程序期望使用其他schema,那么由于两种schema都存在,这种需求可以轻松解决。
在RPC中使用Avro时,客户端和服务器在连接握手中交换schema。 (可以对其进行优化,以便对于大多数调用而言,实际上不会传输任何模式。)由于客户端和服务器都具有对方的完整schema,因此可以轻松解决相同命名字段,缺失字段,多余字段等之间的对应关系。
Avro模式是使用JSON定义的。这有助于以已经具有JSON库的语言实现。
与其他系统的比较
Avro提供的功能类似于Thrift,Protocol Buffer等系统。Avro在以下基本方面与这些系统不同:
动态类型:Avro不需要生成代码。 数据始终伴随着一个schema,对数据进行全面处理而无需代码生成,静态数据类型等。这有助于构建通用数据处理系统和语言。
未标记的数据:由于在读取数据时存在schema,因此需要用数据编码的类型信息少得多,从而导致较小的序列化大小。
没有手动分配的字段ID:当schema更改时,在处理数据时旧schema和新schema都始终存在,因此可以使用字段名称来象征性地解决差异。
Apache Avro简介相关推荐
- apache avro 简介
1 rpc简介: a) 远程过程调用,本质是不同机器之间socket通讯 b) 具体实现产品:rmi xml-rpc avro-rpc 等, 前两者使用时,实现比较复杂,并且相同数据量下序列化 ...
- Apache Avro简介,java实现官网翻译
文章目录 Apache Avro™ Introduction Schemas Comparison with other systems JAVA简单使用 Defining a schema Seri ...
- Apache Avro项目简介
1.Avro简介 Avro是一种远程过程调用RPC和数据序列化框架,是在Apache的Hadoop项目之内开发的.它使用JSON来定义数据类型和通讯协议,使用压缩二进制格式来序列化数据.它主要用于Ha ...
- Apache Mahout 简介
Apache Mahout 简介 通过可伸缩.商业友好的机器学习来构建智能应用程序 当研究院和企业能获取足够的专项研究预算之后,能从数据和用户输入中学习的智能应用程序将变得更加常见.人们对机器学习技巧 ...
- 一文解析Apache Avro数据
摘要:本文将演示如果序列化生成avro数据,并使用FlinkSQL进行解析. 本文分享自华为云社区<[技术分享]Apache Avro数据的序列化.反序列&&FlinkSQL解析 ...
- Apache Avro 与 Thrift 比较
分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.csdn.net/jiangjunshow 也欢迎大家转载本篇文章.分享知识,造福人民,实现我们中华民族伟大复兴! Avro ...
- Apache Ant 简介和配置
Apache Ant 简介 Apache Ant是目前事实上的Java应用的标准build脚本工具.使它大受欢迎的一个主要愿意是它的和灵活,允许程序员创建自己的Task来对Ant进行扩展. 本文主要内 ...
- NoSuchMethodError: org.apache.avro.Schema.getLogicalType()Lorg/apache/avro/LogicalType;
背景 因为要做spark2.3版本的开发,但是里面用了avro序列化kafka的schema,然后使用的avro是 <dependency><groupId>org.apach ...
- kafka python框架_Python中如何使用Apache Avro——Apache的数据序列化系统
了解如何创建和使用基于Apache Avro的数据,以实现更好,更有效的传输. 在这篇文章中,我将讨论Apache Avro,这是一种开源数据序列化系统,Spark,Kafka等工具正在使用该工具进行 ...
最新文章
- 如何禁止端口的使用(有空我把步骤图补上)
- SpringBoot日志收集-Aop方式-存进数据库一起来和我看看咋收集日志吧!!
- 计算机网络--详述OSI七层模型与TCP/IP五层模型
- java at发短信_发送短信(1)
- 多进程实现生产者消费者
- c++二叉树的层序遍历_leetcode 103. 二叉树的锯齿形层序遍历
- bigdecimal 加法_巧用加法的运算律,简化有理数的加法运算
- 亲测!Jquery2.0不支持IE8-了
- 解决php截取文字乱码问题
- Premiere 五套特效转场插件合集 FilmImpact Transition Packs V3.6.11
- 再见,爬虫!直接上手的200数据源合集~
- Excel拆分单元格内容(把一个单元格的内容拆分到多列)
- error: File: XX 520.13 MB, exceeds 100.00 MB以上大文件导致push失败解决方法
- 计算机不显示验证码,浏览器中网页验证码不显示的原因与解决办法
- 【LaTeX】表格调整行高、列宽、合并显示等操作
- linux 鼠标滚轮 太快,Linux - 微软无线鼠标滚动过快问题
- 自学 9个月 Java 找到了一份 12K 的工作,前辈的方式值得分享给大伙
- 并发编程系列之AQS实现原理
- Bootstarp未读消息铃铛
- 也谈如何高效阅读源码