我有一堆看起来像这个草图的工作
Source<GenericRecord> kafkaSource;
kafkaSource
.map(function that takes generic record)
.map( ... )
...
.sink(kafka sink that takes in generic records)
我们将数据表示为GenericRecords的原因是,运行中的Avro模式在运行时会有所不同。我们将模式描述写入一个单独的主题。我们知道向操作员/ kafka传递GenericRecords会降低性能,因此我们为GenericRecords编写了自己的Kafka序列化模式和Kryo序列化器。棘手的部分是我们的自定义序列化程序需要知道当前的模式列表是什么,以便它可以确定如何在消息通过图形时对消息进行序列化。
我一辈子都无法弄清楚如何以理智的方式将此信息传递给序列化器。我知道的方法是:
我知道这是一个复杂的情况,所以我希望它能清楚地遇到。我感到很沮丧,因为我认为没有一种解决方案是合适的。还有我没想到的其他选择吗?有没有更好的方法来管理动态的Avro模式集而无需重新启动?希望有任何建议!谢谢!