Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/332.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何使用ApacheAvro生成无模式的avro文件?_Java_Apache_Avro - Fatal编程技术网

Java 如何使用ApacheAvro生成无模式的avro文件?

Java 如何使用ApacheAvro生成无模式的avro文件?,java,apache,avro,Java,Apache,Avro,我正在使用ApacheAvro进行数据序列化。因为,数据有一个固定的模式,所以我不希望该模式成为序列化数据的一部分。在下面的示例中,模式是avro文件“users.avro”的一部分 User user1=新用户(); user1.setName(“Alyssa”); user1.setFavoriteNumber(256); 用户user2=新用户(“本”,7,“红色”); User user3=User.newBuilder() .setName(“查理”) .setFavoriteColo

我正在使用ApacheAvro进行数据序列化。因为,数据有一个固定的模式,所以我不希望该模式成为序列化数据的一部分。在下面的示例中,模式是avro文件“users.avro”的一部分

User user1=新用户();
user1.setName(“Alyssa”);
user1.setFavoriteNumber(256);
用户user2=新用户(“本”,7,“红色”);
User user3=User.newBuilder()
.setName(“查理”)
.setFavoriteColor(“蓝色”)
.setFavoriteNumber(空)
.build();
//将user1和user2序列化到磁盘
File File=新文件(“users.avro”);
DatumWriter userDatumWriter=新的指定DatumWriter(User.class);
DataFileWriter DataFileWriter=新的DataFileWriter应该是可行的

给定编码器,可以使用DatumWriter将数据直接写入ByteArrayOutputStream(然后可以将其写入java.io.File)

以下是如何开始使用Scala(从):

您可以找到一个全面的how to,其中我解释了如何使用apacheavro实现无模式序列化。 伴随测试活动会显示一些您可能期望的性能数据


示例和测试类展示了如何将数据读写器与Avro自身生成的存根类一起使用。

使用您在代码中描述的方法是否可以指定编解码器?例如,生成无模式的Avro,即,deflate compressed?
User user1 = new User();
user1.setName("Alyssa");
user1.setFavoriteNumber(256);
User user2 = new User("Ben", 7, "red");
User user3 = User.newBuilder()
         .setName("Charlie")
         .setFavoriteColor("blue")
         .setFavoriteNumber(null)
         .build();

// Serialize user1 and user2 to disk
File file = new File("users.avro");
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();
val baos = new ByteArrayOutputStream
val encoder = EncoderFactory.get().binaryEncoder(baos, null)
encoder.write(myRecord, encoder)