如何解决ksqldb使用使用者名称策略TopicRecordNameStrategy
我已经看到并尝试了许多使用avro的ksql流示例,但似乎它不支持TopicRecordNameStrategy。是 是否可以使用主题策略名称TopicRecordNameStrategy为主题创建流?
解决方法
简短的回答是“不”,或者至少我不这么认为。
ksqlDB要求每个Kafka记录中的数据遵循通用模式。这是因为SQL本身是强类型的。在现有主题上创建流或表时,ksqlDB使用此通用模式来定义流或表中的列集。
-- value columns of the CLICKS stream are loaded from the Schema Registry
-- from under the subject 'clicks-value'.
CREATE STREAM CLICKS
WITH (
VALUE_FORMAT='AVRO',KAFKA_TOPIC='users'
);
使用TopicRecordNameStrategy
,每条记录可以具有完全不同的架构,即,完全不同的列集。那么ksqlDB应该使用哪些列来定义表或流中的列?处理起来比较棘手。
在声明源时,可以显式提供表的列,但这也可能会失败-我不确定是否不尝试以下操作:
-- explicitly define the columns:
CREATE STREAM CLICKS
(
URL STRING,USER_ID INT
)
WITH (
VALUE_FORMAT='AVRO',KAFKA_TOPIC='clicks'
);
如果这不起作用,请考虑提高enhancement request in Github,因为应该可以通过简单地捕获当前已注册的所有模式并创建作为所有列的并集的模式来支持该策略。 / p>
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。