`

serialization-Avro

阅读更多
感受最快的序列化和反序列化工具:Avro
参考阅读:
http://tech.meituan.com/serialization_vs_deserialization.html
官网:
http://avro.apache.org/docs/current/gettingstartedjava.html#Creating+users
代码结构图:


pmo 引入:
<dependency>
		  <groupId>org.apache.avro</groupId>
		  <artifactId>avro</artifactId>
		  <version>1.7.7</version>
		</dependency>

<build>
   <plugins>
      <plugin>
  <groupId>org.apache.avro</groupId>
  <artifactId>avro-maven-plugin</artifactId>
  <version>1.7.7</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.6</source>
    <target>1.6</target>
  </configuration>
</plugin>
   </plugins>
</build>


user.avsc
{"namespace": "com.gym.backadmin.controller",
 "type": "record",
 "name": "User",
 "fields": [
     {"name": "name", "type": "string"},
     {"name": "favorite_number",  "type": ["int", "null"]},
     {"name": "favorite_color", "type": ["string", "null"]}
 ]
}


特殊注意:通过以上avsc文件可以直接生成User类代码。

public class Deserializing {
	public static void main(String[] args) throws Exception {
		File file = new File("users.avro");
		DatumReader<User> userDatumReader = new SpecificDatumReader<User>(User.class);
		DataFileReader<User> dataFileReader = new DataFileReader<User>(file, userDatumReader);
		User user = null;
		while (dataFileReader.hasNext()) {
		// Reuse user object by passing it to next(). This saves us from
		// allocating and garbage collecting many objects for files with
		// many items.
		user = dataFileReader.next(user);
		System.out.println(user);
		}
	}
}




public class Serializing {
	public static void main(String[] args) throws IOException {
		User user1 = new User();
		user1.setName("Alyssa");
		user1.setFavoriteNumber(256);
		// Leave favorite color null

		// Alternate constructor
		User user2 = new User("Ben", 7, "red");

		// Construct via builder
		User user3 = User.newBuilder()
		             .setName("Charlie")
		             .setFavoriteColor("blue")
		             .setFavoriteNumber(null)
		             .build();
		DatumWriter<User> userDatumWriter = new SpecificDatumWriter<User>(User.class);
		DataFileWriter<User> dataFileWriter = new DataFileWriter<User>(userDatumWriter);
		dataFileWriter.create(user1.getSchema(), new File("users.avro"));
		dataFileWriter.append(user1);
		dataFileWriter.append(user2);
		dataFileWriter.append(user3);
		dataFileWriter.close();
	}
}
  • 大小: 121 KB
1
0
分享到:
评论

相关推荐

    dubbo-serialization-avro:适用于avro的dubbo序列化扩展

    双重序列化-avro 适用于dubbo的avro序列化工具。1.从src编译我们使用maven来构建和管理依赖项。 下载src git clone ... /groupId &gt; &lt; artifactId&gt; dubbo-serialization-avro &lt; /artifactId &gt; &lt; version&gt;

    cdk-flume-avro-event-serializer-0.9.2

    flume sink serializer用到的序列化类 org.apache.flume.serialization.AvroEventSerializer$Builder

    javascript-serialization-benchmark:JavaScript序列化库(协议缓冲区,Avro,BSON等)的比较和基准测试

    JavaScript中的二进制序列化比较(协议缓冲区,Avro,BSON等) 这是自2020年7月28日起JavaScript中使用的各种二进制序列化格式和库的比较和基准。 我本人试图决定在个人项目中应使用哪种二进制序列化格式,而最简单...

    maven-kafka

    props.put("value.serializer", "org.apache.kafka.common.serialization.StringSerializer"); Producer, String&gt; producer = new KafkaProducer(props); for (int i = 0; i ; i++) { producer.send(new ...

    Apache Avro

    Apache Avro™ is a data serialization system. To learn more about Avro, please read the current documentation. To download Avro, please visit the releases page. Developers interested in getting more ...

    Avro-Java:0.1

    **Avro-Java:0.1** Apache Avro 是一个数据序列化系统,它被设计用于高效、跨语言的数据交换。在Java环境中,Avro提供了一种方式来序列化和反序列化对象,使得不同系统间的数据交互变得更加简单。在这个0.1版本的...

    kafka-serialization:乐高积木,用于构建Apache Kafka序列化器和反序列化器

    `kafka-serialization` 库的目标用户主要是那些希望在Kafka中处理各种数据格式(如JSON、Avro等)的开发人员。它支持多种流行的数据序列化库,如 `json4s`、`spray-json`、`avro4s`,这使得开发者可以轻松地将他们的...

    avro4k:Avro对kotlinx.serialization的支持

    该库是我的Scala Avro生成器的端口。 介绍 Avro4k是Kotlin库,它将对Avro的支持引入Kotlin序列化框架。 该库支持对二进制和json流进行读写,还支持Avro模式生成。 从Kotlin数据类。 这使您可以将数据类用作模式的...

    avro4s:Scala的Avro模式生成和序列化反序列化

    Avro4s是用Scala编写的用于的模式/类生成以及序列化/反序列化库。 目的是允许与Scala无缝使用,而无需自己编写样板转换,也不需要反射的运行时开销。 因此,这是一个基于宏的库,并在编译时生成用于Avro的代码。 该...

    avro-serde-php:具有Symfony Serializer集成PHP 7.3+和8.0的Avro SerialisationDeserialisation(SerDe)库

    适用于PHP 7.3+和8.0的Avro SerDe动机在使用序列化格式对消息进行序列化和反序列化时,尤其是在与集成时,您需要... composer require ' flix-tech/avro-serde-php:^1.6 '快速开始注意您应该始终使用缓存的架构注册表客

    avro-1.9.2.tar.gz

    在“avro-1.9.2.tar.gz”这个压缩包中,我们看到的是Avro的1.9.2版本,适用于Python环境。 **Avro的数据模型** Avro的核心是其简洁而强大的数据模型。它定义了一种紧凑的二进制格式,用于存储和传输数据。数据模型...

    avsc:适用于JavaScript的Avro

    所有Avro的优点以及更多:,和。 支持。 不受限制的。 安装 $ npm install avsc avsc是与所有版本兼容自0.11通过与主要的浏览器 。 为了方便起见,您还可以在发行版中找到已编译的发行版(但请托管您自己的副本...

    Hadoop The Definitive Guide 3rd Edition

    Use Hadoop’s data and I/O building blocks for compression, data integrity, serialization (including Avro), and persistence Discover common pitfalls and advanced features for writing real-world ...

    Hadoop权威指南第三版修订版

    Use Hadoop’s data and I/O building blocks for compression, data integrity, serialization (including Avro), and persistence Discover common pitfalls and advanced features for writing real-world ...

    cpp-serializers:比较各种C ++数据序列化库(节俭,protobuf等)的基准

    在C++编程中,数据序列化是一个至关重要的过程,它涉及到将对象的状态转换为可存储或可传输的数据格式。此过程通常用于持久化数据、网络通信以及跨不同平台的数据交换。`cpp-serializers`项目提供了一个基准测试,...

    hadoop 权威指南(第三版)英文版

    Avro File-Based Data Structures SequenceFile MapFile 5. Developing a MapReduce Application . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 145 The Configuration API Combining ...

    kafka-serde-scala:隐式将类型类编码器转换为kafka序列化器,反序列化器和Serde

    例如,使用`avro-kafka`或`avro4s`库,我们可以定义Avro模式并创建对应的编码器和解码器。然后,`kafka-serde-scala`会处理将这些转换为Kafka的`Serde`。 总之,`kafka-serde-scala`简化了在Scala项目中使用Kafka时...

Global site tag (gtag.js) - Google Analytics