首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用模式演化的Kafka avro序列化

使用模式演化的Kafka avro序列化
EN

Stack Overflow用户
提问于 2018-05-15 22:03:36
回答 1查看 562关注 0票数 0

我正在尝试建立一个kakfa管道,它将读取JSON输入数据到Kafka主题。

我在模式注册表中使用AVRO序列化,因为我的模式会定期更改。

到目前为止,GenericRecord用于解析模式。

但是我最近才知道avro-tools可以用来读取模式和生成Java类,这些类可以用来创建生产者代码。

我很困惑在这两个选项之间做出选择。

由于我的模式经常更改,您能建议我哪一个更好吗?

EN

回答 1

Stack Overflow用户

发布于 2018-05-16 08:42:30

avro工具可用于读取模式和生成java类,这些类可用于创建生产者代码

他们创建特定的Avro类,而不是生产者代码,而是关于问题的。两者都会起作用。

在我看来

  • GenericRecord -把它想象成一个HashMap<String, Object>。作为消费者,需要知道要获取的字段。如果作为生产者或模式创建者,您不能将类作为库发送给消费者,这基本上是您所能得到的最好的结果。不过,我相信您总能获得最新的数据(所有可能的字段都可以通过get("fieldname")调用来访问。See example here
  • SpecificRecord ( avro-tools生成的)-它只是一个生成的类,带有getter方法和构建器对象/ setter方法。任何消费者都可以将生产者类作为依赖项导入,对消息进行反序列化,然后立即知道哪些字段可用。您不能保证在这里获得最新的模式-您将被“降级”,并被限制到用于生成这些类的任何模式。

我通常使用avro-maven-plugin来创建类。Just as this example

您也可以在Java类中使用AvroReflect to build an Avro schema,而不是相反。用于设置@Union@AvroDefault设置的Annotations can be used on字段。

Further Reading about using the Confluent Schema Registry

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50352277

复制
相关文章

相似问题

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