[英]How to create KSQL Stream with large number of JSON fields from topic in kafka?
我将一个长 JSON 字符串传递给 kafka 主题,例如:
{
"glossary": {
"title": "example glossary",
"GlossDiv": {
"title": "S",
"GlossList": {
"GlossEntry": {
"ID": "SGML",
"SortAs": "SGML",
"GlossTerm": "Standard Generalized Markup Language",
"Acronym": "SGML",
"Abbrev": "ISO 8879:1986",
"GlossDef": {
"para": "A meta-markup language, used to create markup languages such as DocBook.",
"GlossSeeAlso": ["GML", "XML"]
},
"GlossSee": "markup"
}
}
}
}
}
并希望从 kafka 主题创建包含所有字段的流,而不指定 KSQL 中的每个字段,例如:
CREATE STREAM pageviews_original (*) WITH \
(kafka_topic='pageviews', value_format='JSON');
如果您希望 KSQL 自动获取字段名称,则需要使用 Avro。 如果您使用 Avro,则数据的架构会在 Confluent Schema Registry 中注册,当您使用该主题时,KSQL 会自动检索它。
如果您使用 JSON,您必须告诉 KSQL 列是什么。 您可以在CREATE STREAM
语句中执行此操作,对嵌套元素使用STRUCT
数据类型。
您可以通过仅声明CREATE STREAM
中的高级字段,然后使用EXTRACTJSONFIELD
访问您要使用的字段的嵌套元素来EXTRACTJSONFIELD
字段。 请注意 5.0.0 中存在一个问题,该问题将在 5.0.1 中修复。 此外,您不能将它用于您显示的示例数据中的嵌套数组等。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.