Apache spark 使用Kafka和Schema registry,我对Avro数据进行编码和解码,但如何处理下游的GenericRecord数据处理?

Apache spark 使用Kafka和Schema registry,我对Avro数据进行编码和解码,但如何处理下游的GenericRecord数据处理?,apache-spark,apache-kafka,avro,confluent-platform,telemetry,Apache Spark,Apache Kafka,Avro,Confluent Platform,Telemetry,我正在为我们的项目建立一个遥测管道。我已经输入了AVRO编码,通过使用Schema注册表,我将AVRO数据解码为基于SchemaID的GenericRecord。我计划运行Spark jobs进行进一步的下游处理。但是,在Spark jobs中处理数据模型的最佳方法是什么?所有示例都指向使用result.get(“fieldname”),但这是建议的方法吗?使用GenericRecord的好处在于,它从使用者那里提取出与模式注册表相关的详细信息。因此,您不必从有效负载记录中获取模式id,对汇合模

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

使用GenericRecord的好处在于,它从使用者那里提取出与模式注册表相关的详细信息。因此,您不必从有效负载记录中获取模式id,对汇合模式注册表进行GET调用以获取avro模式,然后进行反序列化。我不知道这对性能有什么影响,但我很想知道是否有影响

另一方面,如果希望使用自己的avro bytearray序列化器/反序列化器,则需要了解avro负载的结构。例如,您必须解析avro有效负载以验证魔法字节,提取4字节模式Id和模式,等等。。。您可能希望实现已检索模式的内存缓存,因为减少对模式注册表的http调用数量是一个好主意。有关这方面的更多详细信息,请参见