我有一个主题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划分,但我不想在值上丢失它。
1条答案
按热度按时间wko9yo5t1#
解决了。
PARTITION BY子句将列移动到键中。如果还希望它们包含在值中,则必须使用AS_VALUE函数复制它们。
https://docs.ksqldb.io/en/latest/developer-guide/joins/partition-data/的文档