您现在的位置是:主页 > news > 交友平台网站建设/软文代写价格
交友平台网站建设/软文代写价格
admin2025/5/16 11:54:18【news】
简介交友平台网站建设,软文代写价格,广州网站建设公,WordPress让中文名图片显示文章目录一、Avro是什么?二、使用步骤1. 下载三、 Java中使用Avro1. 新建maven项目2. 定义模式3. 创建用户三、 Avro序列化四、 Avro反序列化五、 没有代码生成的序列化六、 没有代码生成的去序列化一、Avro是什么? Avro是一个独立于编程语言的数据序列化…
文章目录
- 一、Avro是什么?
- 二、使用步骤
- 1. 下载
- 三、 Java中使用Avro
- 1. 新建maven项目
- 2. 定义模式
- 3. 创建用户
- 三、 Avro序列化
- 四、 Avro反序列化
- 五、 没有代码生成的序列化
- 六、 没有代码生成的去序列化
一、Avro是什么?
Avro是一个独立于编程语言的数据序列化系统,由Hadoop的创始人Doug Cutting创建。为了解决Hadoop中writable类型的不足(缺乏语言的可移植性)
avro模式通常用json编写,数据通常采用二进制格式编码。
优点:
- 丰富的数据结构。
- 紧凑、快速、二进制的数据格式。
- 一个容器文件,用来存储持久性数据。
- 远程程序呼叫 (RPC)。
- 与动态语言的简单集成。代码生成不需要读取或编写数据文件,也不需要使用或实施 RPC 协议。代码生成作为可选优化,仅值得针对静态键入的语言实施。
- schema和data同时存放在文件中存储,block之间有同步标记。
- avro是可切割的
数据序列化:
java–>ObjectOutputStream/ObjectInputStream
hadoop–>Writable–>DataOutputStream/DataInputStream
二、使用步骤
1. 下载
- 官网地址http://avro.apache.org/
- 点击进去后,下拉点击下载,进入最新版本
- 下拉点击下载
- 点击图中链接
- 下载稳定版
- 找到Java点进去
- 下载下面红框四个
三、 Java中使用Avro
参考官方文档,http://avro.apache.org/docs/current/gettingstartedjava.html,使用Java代码实现avro串行化
1. 新建maven项目
在maven中的pom.xml的<dependencies></dependencies>
中加入下面代码,根据自己版本来
<dependency><groupId>org.apache.avro</groupId><artifactId>avro</artifactId><version>1.10.2</version>
</dependency>
在<build> <plugins> </plugins></build>
中加入下面代码
以及 Avro Maven 插件(用于执行代码生成):
<plugin><groupId>org.apache.avro</groupId><artifactId>avro-maven-plugin</artifactId><version>1.10.2</version><executions><execution><phase>generate-sources</phase><goals><goal>schema</goal></goals><configuration><sourceDirectory>${project.basedir}/src/main/avro/</sourceDirectory><outputDirectory>${project.basedir}/src/main/java/</outputDirectory></configuration></execution></executions>
</plugin>
<plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-compiler-plugin</artifactId><configuration><source>1.8</source><target>1.8</target></configuration>
</plugin>
我的maven项目结构
2. 定义模式
-
先下载avro-tools-1.10.2.jar。
-
创建schema文件user.avro。在自己电脑盘新建一个文件在此文件下创建一个文本。
(注意:不要是txt文件,是avsc文件)
-
用记事本打开此文件,在文件中加入下面代码。
{"namespace": "cn.itcast.myavro.model", //后面的是编译成功会出现文件名,下面步骤会用到(是自己的maven项目下的包名,这个是我的包名,编译好的文件会在这个包中)"type": "record","name": "User","fields": [{"name": "name", "type": "string"},{"name": "favorite_number", "type": ["int", "null"]},{"name": "favorite_color", "type": ["string", "null"]}]
}
- 编译schema,生成Java 代码
java -jar /path/to/avro-tools-1.10.2.jar compile schema <schema file> <destination>
例如:java -jar /path/to/avro-tools-1.10.2.jar compile schema user.avsc .
返回user.avsc
文件所在的路径下,发现已经编译成功,出现了一个cn文件夹
- 将整个cn文件夹直接复制到eclipse下maven项目中src/main/java下,看到有个编译好的user.Java文件
3. 创建用户
编写Java代码创建用户,在原文件名是App.Java(我改名成下面这个名字)下,将它们串序到磁盘上的数据文件,然后读回文件并取消对用户对象的隔离。
三、 Avro序列化
序列化代码
代码中把文件写到d盘下(可修改路径)
四、 Avro反序列化
- 创建一个新类,取名Deserializing。从磁盘反序列化用户
- 代码
五、 没有代码生成的序列化
Avro 中的数据始终存储在其相应的模式中,这意味着无论我们是否提前知道该模式,我们都可以随时读取序列化项目。这使我们能够在没有代码生成的情况下执行序列化和去序列化。
无需使用代码生成:我们将创建一些用户,将它们序列化为磁盘上的数据文件,然后读回文件并取消对用户对象的隔离。
由于我们不使用代码生成,我们使用通用记录来表示用户。通用记录使用该模式来验证我们只指定有效字段。