目录

介绍

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简介相关推荐

  1. apache avro 简介

    1 rpc简介: a) 远程过程调用,本质是不同机器之间socket通讯 b) 具体实现产品:rmi   xml-rpc   avro-rpc 等, 前两者使用时,实现比较复杂,并且相同数据量下序列化 ...

  2. Apache Avro简介,java实现官网翻译

    文章目录 Apache Avro™ Introduction Schemas Comparison with other systems JAVA简单使用 Defining a schema Seri ...

  3. Apache Avro项目简介

    1.Avro简介 Avro是一种远程过程调用RPC和数据序列化框架,是在Apache的Hadoop项目之内开发的.它使用JSON来定义数据类型和通讯协议,使用压缩二进制格式来序列化数据.它主要用于Ha ...

  4. Apache Mahout 简介

    Apache Mahout 简介 通过可伸缩.商业友好的机器学习来构建智能应用程序 当研究院和企业能获取足够的专项研究预算之后,能从数据和用户输入中学习的智能应用程序将变得更加常见.人们对机器学习技巧 ...

  5. 一文解析Apache Avro数据

    摘要:本文将演示如果序列化生成avro数据,并使用FlinkSQL进行解析. 本文分享自华为云社区<[技术分享]Apache Avro数据的序列化.反序列&&FlinkSQL解析 ...

  6. Apache Avro 与 Thrift 比较

    分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.csdn.net/jiangjunshow 也欢迎大家转载本篇文章.分享知识,造福人民,实现我们中华民族伟大复兴! Avro ...

  7. Apache Ant 简介和配置

    Apache Ant 简介 Apache Ant是目前事实上的Java应用的标准build脚本工具.使它大受欢迎的一个主要愿意是它的和灵活,允许程序员创建自己的Task来对Ant进行扩展. 本文主要内 ...

  8. NoSuchMethodError: org.apache.avro.Schema.getLogicalType()Lorg/apache/avro/LogicalType;

    背景 因为要做spark2.3版本的开发,但是里面用了avro序列化kafka的schema,然后使用的avro是 <dependency><groupId>org.apach ...

  9. kafka python框架_Python中如何使用Apache Avro——Apache的数据序列化系统

    了解如何创建和使用基于Apache Avro的数据,以实现更好,更有效的传输. 在这篇文章中,我将讨论Apache Avro,这是一种开源数据序列化系统,Spark,Kafka等工具正在使用该工具进行 ...

最新文章

  1. 如何禁止端口的使用(有空我把步骤图补上)
  2. SpringBoot日志收集-Aop方式-存进数据库一起来和我看看咋收集日志吧!!
  3. 计算机网络--详述OSI七层模型与TCP/IP五层模型
  4. java at发短信_发送短信(1)
  5. 多进程实现生产者消费者
  6. c++二叉树的层序遍历_leetcode 103. 二叉树的锯齿形层序遍历
  7. bigdecimal 加法_巧用加法的运算律,简化有理数的加法运算
  8. 亲测!Jquery2.0不支持IE8-了
  9. 解决php截取文字乱码问题
  10. Premiere 五套特效转场插件合集 FilmImpact Transition Packs V3.6.11
  11. 再见,爬虫!直接上手的200数据源合集~
  12. Excel拆分单元格内容(把一个单元格的内容拆分到多列)
  13. error: File: XX 520.13 MB, exceeds 100.00 MB以上大文件导致push失败解决方法
  14. 计算机不显示验证码,浏览器中网页验证码不显示的原因与解决办法
  15. 【LaTeX】表格调整行高、列宽、合并显示等操作
  16. linux 鼠标滚轮 太快,Linux - 微软无线鼠标滚动过快问题
  17. 自学 9个月 Java 找到了一份 12K 的工作,前辈的方式值得分享给大伙
  18. 并发编程系列之AQS实现原理
  19. Bootstarp未读消息铃铛
  20. 也谈如何高效阅读源码

热门文章

  1. Android 变脸谁是幕后的魔法师?
  2. paypal账户不够怎么办?
  3. 计算机组成原理---浮点数的表示方法
  4. pyecharts可视化展示之仪表盘、词云、组合图表、桑基图学习
  5. 游戏资讯网站用什么服务器,什么是RP服务器
  6. 过秦楼 . 碧玉连空
  7. 你要知道,所有产品的底层逻辑都要围绕人性
  8. 打造Flutter高性能富文本编辑器——协议篇
  9. [剑指offer]二叉搜索树的后序遍历数列
  10. 前端工具库cdn地址和印记中文