ksql table 向 rowkey 添加额外的字符

ksql table adds extra characters to rowkey

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

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

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

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

您如何填充 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,则无需指定架构。