使用kafka和schema registry,我对avro数据进行编码和解码,但是如何处理下游的genericord数据处理?

5vf7fwbs  于 2021-06-08  发布在  Kafka
关注(0)|答案(1)|浏览(405)

我正在为我们的项目建立一个遥测管道处理。我已经输入了avro编码,通过使用schema注册表,我将avro数据解码为基于schemaid的genericord。我计划运行spark作业进行进一步的下游处理。但是,在spark jobs中处理数据模型的最佳方法是什么?所有的例子都指向使用result.get(“fieldname”),但这是建议的方法吗?

eh57zj3b

eh57zj3b1#

使用genericrecord的好处是,它从使用者抽象出与模式注册表相关的细节。因此,您不必从有效负载记录中获取模式id,对合流模式注册表进行get调用以获取avro模式,然后进行反序列化。我不知道这对性能有什么影响,但我很想知道是否有影响。
另一方面,如果希望使用自己的avro bytearray序列化程序/反序列化程序,则需要了解avro负载的结构。e、 g.您必须解析avro负载来验证魔法字节,提取4字节的模式id和模式,等等。。。您可能希望实现一个已经检索到的模式的内存缓存,因为减少对模式注册表的http调用是一个好主意。更多的细节,可以在这里找到。

相关问题