首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用apache avro生成无模式avro文件?

如何使用apache avro生成无模式avro文件?
EN

Stack Overflow用户
提问于 2015-03-02 19:17:23
回答 2查看 10.3K关注 0票数 12

我使用Apache avro进行数据序列化。由于数据具有固定的模式,因此我不希望该模式成为序列化数据的一部分。在下面的示例中,模式是avro文件"users.avro“的一部分。

代码语言:javascript
复制
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();

谁能告诉我如何存储不嵌入模式的avro文件?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-11-04 04:35:36

Here中,我解释了如何使用Apache Avro实现无模式序列化。一个配套的测试活动显示了一些您可能期望的性能数据。

example和test类展示了如何将数据读取器和写入器与code is on GitHub本身生成的存根类一起使用。

票数 7
EN

Stack Overflow用户

发布于 2015-03-05 11:05:37

应该是可行的。

在给定编码器的情况下,您可以使用DatumWriter直接向ByteArrayOutputStream写入数据(然后可以将其写入java.io.File)。

下面是如何开始使用Scala (来自Salat-Avro):

代码语言:javascript
复制
val baos = new ByteArrayOutputStream
val encoder = EncoderFactory.get().binaryEncoder(baos, null)
encoder.write(myRecord, encoder)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28808479

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档