感受最快的序列化和反序列化工具: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
分享到:
相关推荐
双重序列化-avro 适用于dubbo的avro序列化工具。1.从src编译我们使用maven来构建和管理依赖项。 下载src git clone ... /groupId > < artifactId> dubbo-serialization-avro < /artifactId > < version>
flume sink serializer用到的序列化类 org.apache.flume.serialization.AvroEventSerializer$Builder
JavaScript中的二进制序列化比较(协议缓冲区,Avro,BSON等) 这是自2020年7月28日起JavaScript中使用的各种二进制序列化格式和库的比较和基准。 我本人试图决定在个人项目中应使用哪种二进制序列化格式,而最简单...
props.put("value.serializer", "org.apache.kafka.common.serialization.StringSerializer"); Producer, String> producer = new KafkaProducer(props); for (int i = 0; i ; i++) { producer.send(new ...
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 ...
#### Data Serialization(数据序列化) - **Encodings(编码)**:文档定义了数据可以如何被编码,包括binary encoding(二进制编码)、JSON encoding(JSON编码)和Single-object encoding(单对象编码)。 - **...
**Avro-Java:0.1** Apache Avro 是一个数据序列化系统,它被设计用于高效、跨语言的数据交换。在Java环境中,Avro提供了一种方式来序列化和反序列化对象,使得不同系统间的数据交互变得更加简单。在这个0.1版本的...
`kafka-serialization` 库的目标用户主要是那些希望在Kafka中处理各种数据格式(如JSON、Avro等)的开发人员。它支持多种流行的数据序列化库,如 `json4s`、`spray-json`、`avro4s`,这使得开发者可以轻松地将他们的...
该库是我的Scala Avro生成器的端口。 介绍 Avro4k是Kotlin库,它将对Avro的支持引入Kotlin序列化框架。 该库支持对二进制和json流进行读写,还支持Avro模式生成。 从Kotlin数据类。 这使您可以将数据类用作模式的...
Avro4s是用Scala编写的用于的模式/类生成以及序列化/反序列化库。 目的是允许与Scala无缝使用,而无需自己编写样板转换,也不需要反射的运行时开销。 因此,这是一个基于宏的库,并在编译时生成用于Avro的代码。 该...
适用于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版本,适用于Python环境。 **Avro的数据模型** Avro的核心是其简洁而强大的数据模型。它定义了一种紧凑的二进制格式,用于存储和传输数据。数据模型...
所有Avro的优点以及更多:,和。 支持。 不受限制的。 安装 $ npm install avsc avsc是与所有版本兼容自0.11通过与主要的浏览器 。 为了方便起见,您还可以在发行版中找到已编译的发行版(但请托管您自己的副本...
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 ...
在C++编程中,数据序列化是一个至关重要的过程,它涉及到将对象的状态转换为可存储或可传输的数据格式。此过程通常用于持久化数据、网络通信以及跨不同平台的数据交换。`cpp-serializers`项目提供了一个基准测试,...
例如,使用`avro-kafka`或`avro4s`库,我们可以定义Avro模式并创建对应的编码器和解码器。然后,`kafka-serde-scala`会处理将这些转换为Kafka的`Serde`。 总之,`kafka-serde-scala`简化了在Scala项目中使用Kafka时...
输出可以根据SERIALIZATION_FORMAT配置变量在kafka主题中编写JSON或Avro-JSON消息。JSON格式{ " timestamp " : " 1970-01-01T00:00:00Z " , " value " : " 9876543210 " , " name " : " up " , " labels " : { " __...