您现在的位置是:主页 > news > 交友平台网站建设/软文代写价格

交友平台网站建设/软文代写价格

admin2025/5/16 11:54:18news

简介交友平台网站建设,软文代写价格,广州网站建设公,WordPress让中文名图片显示文章目录一、Avro是什么?二、使用步骤1. 下载三、 Java中使用Avro1. 新建maven项目2. 定义模式3. 创建用户三、 Avro序列化四、 Avro反序列化五、 没有代码生成的序列化六、 没有代码生成的去序列化一、Avro是什么? Avro是一个独立于编程语言的数据序列化…

交友平台网站建设,软文代写价格,广州网站建设公,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编写,数据通常采用二进制格式编码。
优点:

  1. 丰富的数据结构。
  2. 紧凑、快速、二进制的数据格式。
  3. 一个容器文件,用来存储持久性数据。
  4. 远程程序呼叫 (RPC)。
  5. 与动态语言的简单集成。代码生成不需要读取或编写数据文件,也不需要使用或实施 RPC 协议。代码生成作为可选优化,仅值得针对静态键入的语言实施。
  6. schema和data同时存放在文件中存储,block之间有同步标记。
  7. avro是可切割的

数据序列化:
java–>ObjectOutputStream/ObjectInputStream
hadoop–>Writable–>DataOutputStream/DataInputStream

二、使用步骤

1. 下载

  1. 官网地址http://avro.apache.org/
    在这里插入图片描述
  2. 点击进去后,下拉点击下载,进入最新版本
    在这里插入图片描述
  3. 下拉点击下载在这里插入图片描述
  4. 点击图中链接
    在这里插入图片描述
  5. 下载稳定版在这里插入图片描述
  6. 找到Java点进去在这里插入图片描述
  7. 下载下面红框四个
    在这里插入图片描述在这里插入图片描述

三、 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. 定义模式

  1. 先下载avro-tools-1.10.2.jar。

  2. 创建schema文件user.avro。在自己电脑盘新建一个文件在此文件下创建一个文本。
    (注意:不要是txt文件,是avsc文件)
    在这里插入图片描述

  3. 用记事本打开此文件,在文件中加入下面代码。

{"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"]}]
}
  1. 编译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文件夹
在这里插入图片描述

  1. 将整个cn文件夹直接复制到eclipse下maven项目中src/main/java下,看到有个编译好的user.Java文件
    在这里插入图片描述

3. 创建用户

编写Java代码创建用户,在原文件名是App.Java(我改名成下面这个名字)下,将它们串序到磁盘上的数据文件,然后读回文件并取消对用户对象的隔离。
在这里插入图片描述

三、 Avro序列化

序列化代码
在这里插入图片描述
代码中把文件写到d盘下(可修改路径)
在这里插入图片描述

四、 Avro反序列化

  1. 创建一个新类,取名Deserializing。从磁盘反序列化用户
  2. 代码
    在这里插入图片描述

五、 没有代码生成的序列化

Avro 中的数据始终存储在其相应的模式中,这意味着无论我们是否提前知道该模式,我们都可以随时读取序列化项目。这使我们能够在没有代码生成的情况下执行序列化和去序列化。

无需使用代码生成:我们将创建一些用户,将它们序列化为磁盘上的数据文件,然后读回文件并取消对用户对象的隔离。

由于我们不使用代码生成,我们使用通用记录来表示用户。通用记录使用该模式来验证我们只指定有效字段。
在这里插入图片描述

六、 没有代码生成的去序列化

在这里插入图片描述