KSQL Kafka格式化键

时间:2018-04-15 16:44:24

标签: apache-kafka apache-kafka-streams ksql

我的一个主题有一个字符串json作为键 - {" city":" X"," id":22}。 在我的ksql语句中,我想将它提取到2个不同的字段而不是一个,以便我可以在以后过滤和加入。在文档中,它似乎允许我只将整个字符串粘贴到键中,而不是允许将其格式化为JSON(就像FORMAT_VALUE一样),请参阅下面的内容...对此优雅解决方案的任何建议?

VALUE_FORMAT(必需)指定主题中消息值的序列化格式。支持的格式:JSON,DELIMITED和AVRO

KEY将Kafka主题中的消息密钥与KSQL流中的列关联。

1 个答案:

答案 0 :(得分:4)

您应该可以使用EXTRACTJSONFIELD列上的ROWKEY UDF执行此操作。 ROWKEY列是架构中的“列”,其中包含给定行的键。 EXTRACTJSONFIELD UDF允许您从包含json字符串的列中提取字段。因此,对于您的示例,您可以运行:

SELECT EXTRACTJSONFIELD(ROWKEY, '$.city') AS city, EXTRACTJSONFIELD(ROWKEY, '$.id') AS id FROM FOO;