首页 > 解决方案 > ksql 表向行键添加了额外的字符

问题描述

我有一些 avro 格式的 kafka 主题,我创建了一个流和一个表以便能够与 ksql 连接,但连接的结果总是为空。

进行故障排除后,我发现密钥前面有一些字符,这取决于字符串的长度。我想这与avro有关,但我找不到问题出在哪里。

CREATE TABLE entity_table ( Id VARCHAR,    Info info )
WITH
(
KAFKA_TOPIC = 'pisos',
VALUE_FORMAT='avro',
KEY = 'Id');

select * from entity_table;
1562839624583 | $99999999999.999999 | 99999999999.510136  | 1                
1562839631250 | &999999999990.999999 | 99999999999.510136  | 2

标签: avroksqldb

解决方案


您如何填充 Kafka 主题?KSQL 目前只支持字符串键。如果您无法更改主题的填充方式,您可以执行以下操作:

CREATE STREAM entity_src WITH (KAFKA_TOPIC = 'pisos', VALUE_FORMAT='avro');

CREATE STREAM entity_rekey AS SELECT * FROM entity_src PARTITION BY ID;

CREATE TABLE entity_table with (KAFKA_TOPIC='entity_rekey', VALUE_FORMAT='AVRO');

顺便说一句,如果您使用 Avro,则无需指定架构。


推荐阅读