Java 与 Python 通过 Apache Avro 交换数据
2017-04-14 23:35
489 查看
最近转战到 Amazon 的云服务 AWS 上,考虑到在使用它的 Lambda 服务时 Python 应用有比较可观的启动速度,与之相比而言,Java 总是慢热型,还是一个内存大户。所以有想法 Lambda 函数用 Python 来写,来增强响应速度,而内部的应用仍然采用 Java, 于是就有了 Java 与 Python 的数据交换格式。使用 Kafka 的时候是用的 Apache
Avro, 因此继续考察它。
注意,本文的内容会有很大部份与前一篇 Apache Avro 序列化与反序列化 (Java 实现) 雷同,不过再经一次的了应用,了解更深了。
在不同类型语言间进行数据交换,很容易会想到用 JSON 格式,那我们为什么还要用 Apache Avro 呢?通过接下来的内容,我们可以看到以下几点:
Apache Avro 序列化的格式也是 JSON 的,Java 的 Avro 库依赖于 Jackson 库
序列化数据库本身带有 Schema 定义的,方便于反序列化,特别是对于 Java 代码; 而 JavaScript 会表示多此一举
自动支持序列化数据的压缩,在官方提供的库中,Java 可支持
和
和
天然支持序列化对象列表,这样在序列化数据中只需要一份 Schema,类似于数据库表 Schema 加上多记录行的表示方式。只用 Apache Avro 传输小对象的话,数据量比 JSON 事 JDK 序列化的数据要大。
Apache Avro 官方提供有 C, C++, C#, Java, PHP, Python 和 Ruby 的支持库,可在网上找到其他语种的类库,如 NodeJS, Go 的,等等。 阅读全文
>>
Avro, 因此继续考察它。
注意,本文的内容会有很大部份与前一篇 Apache Avro 序列化与反序列化 (Java 实现) 雷同,不过再经一次的了应用,了解更深了。
在不同类型语言间进行数据交换,很容易会想到用 JSON 格式,那我们为什么还要用 Apache Avro 呢?通过接下来的内容,我们可以看到以下几点:
Apache Avro 序列化的格式也是 JSON 的,Java 的 Avro 库依赖于 Jackson 库
序列化数据库本身带有 Schema 定义的,方便于反序列化,特别是对于 Java 代码; 而 JavaScript 会表示多此一举
自动支持序列化数据的压缩,在官方提供的库中,Java 可支持
deflate,
snappy,
bzip2,
和
xz. 其他语言中可能少些,如 Python 只支持
deflate,
和
snappy, 应该可扩充。序列化数据中 Schema 部分不被压缩
天然支持序列化对象列表,这样在序列化数据中只需要一份 Schema,类似于数据库表 Schema 加上多记录行的表示方式。只用 Apache Avro 传输小对象的话,数据量比 JSON 事 JDK 序列化的数据要大。
Apache Avro 官方提供有 C, C++, C#, Java, PHP, Python 和 Ruby 的支持库,可在网上找到其他语种的类库,如 NodeJS, Go 的,等等。 阅读全文
>>
相关文章推荐
- Apache Avro:一个新的数据交换格式
- 用scipy.io通过mat文件在Python和Matlab/Octave之间进行数据交换
- RESTEasy通过ApacheAPI或JavaAPI进行TEXT、XML、JSON数据交换
- Apache Avro:一个新的数据交换格式
- 高性能数据序列化库,可序列化为binary,也可序列化为json,支持C++ java python php objectc 语言,兼容json数据格试,可以互相转换,跨语言交换数据,网络传输,远程调
- 通过用第三方包jpype在Python中调用Java代码
- Python 通过print将数据保存到文件中
- 通过Java向Mysql写中文数据出现乱码解决方式
- Cocos2dX通过Java服务器向Unity传输数据一
- Cocos2dX通过Java服务器向Unity传输数据三
- Java Web开发7___通过数据库连接池连接MySQL 数据库
- 通过代理类实现java连接数据库(使用dao层操作数据)实例分享
- 内核空间与用户空间数据交换的方式之一 --ioctl(通过字符设备演示)
- java通过poi读取excel中的日期类型数据或自定义类型日期
- java程序通过 pdf模板 添加pdf表单数据并打印
- java通过URL读取json数据
- Python 通过 ACR122 修改 Mifare 1 卡数据
- XMLBEANS实践——自动化XML和Java之间的数据交换(一)
- 通过python直接显示json格式数据的方法
- JAVA-UDP初步:数据交换示例