Kafka 当我尝试在KSQL中使用PARTITION BY时,但是PARTITION BY使用的字段在值处将丢失

0md85ypi  于 2023-02-18  发布在  Apache
关注(0)|答案(1)|浏览(144)

我有一个主题test_partition_key_stream,它的模式如下:值:键:null { "id": 1, "age": 18, "name": "lisa" }然后我这样做:CREATE STREAM TEST_STREAM_JSON (id INT ,age INT ,name VARCHAR) WITH (KAFKA_TOPIC = 'test_partition_key_stream', VALUE_FORMAT = 'JSON');
CREATE STREAM TEST_STREAM_AVRO WITH (PARTITIONS=3, VALUE_FORMAT='AVRO') AS SELECT * FROM TEST_STREAM_JSON PARTITION BY ID;
但是当我使用PARTITION BY时,主题值一侧的“ID”字段将丢失。
生成的新主题:{ "fields": [ { "default": null, "name": "AGE", "type": [ "null", "int" ] }, { "default": null, "name": "NAME", "type": [ "null", "string" ] } ], "name": "KsqlDataSourceSchema", "namespace": "io.confluent.ksql.avro_schemas", "type": "record" }
我想让新的主题按ID划分,但我不想在值上丢失它。

wko9yo5t

wko9yo5t1#

解决了。
PARTITION BY子句将列移动到键中。如果还希望它们包含在值中,则必须使用AS_VALUE函数复制它们。
https://docs.ksqldb.io/en/latest/developer-guide/joins/partition-data/的文档

相关问题