[英]Processing json data from kafka using structured streaming
我想将来自 Kafka 的传入 JSON 数据转换为 dataframe。
我正在使用带有Scala 2.12
的结构化流
大多数人添加硬编码模式,但如果 json 可以有额外的字段,则需要每次更改代码库,这很乏味。
一种方法是将其写入文件并推断它,但我宁愿避免这样做。
有没有其他方法可以解决这个问题?
编辑:找到一种方法将 json 字符串转换为 dataframe 但无法从 stream 源中提取它,可以提取它吗?
一种方法是将模式本身存储在消息头中(而不是键或值)。
虽然这会增加消息大小,但解析 JSON 值将很容易,而不需要任何外部资源,如文件或模式注册表。
新消息可以有新的模式,同时旧消息仍然可以使用它们的旧模式本身来处理,因为模式在消息本身之内。
或者,您可以版本化模式并在消息头中包含每个模式的id
(或)键或值中的魔术字节,并从那里推断模式。
这种方法之后是Confluent Schema 注册表。 它允许您通过相同模式的不同版本基本上 go 并查看您的模式如何随着时间的推移而演变。
将数据读取为字符串,然后将其转换为 map[string,String],这样您就可以在不知道其架构的情况下处理任何 json
基于 JavaTechnical 的回答,最好的方法是使用模式注册表和 avro 数据而不是 json,没有办法硬编码模式(目前)。
将您的架构名称和 ID 包含为 header 并使用它们从架构注册表中读取架构。
使用from_avro
将该数据转换为 df!
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.