Apache kafka 如何在ksql流中将列指定为键

Apache kafka 如何在ksql流中将列指定为键,apache-kafka,confluent-platform,ksqldb,Apache Kafka,Confluent Platform,Ksqldb,如何将自定义列分配给ksql流中的键。在步骤1中,我创建了messagekey列,并将其分配为KEY,在第二步中,我使用udf生成uuid,并在创建第二个流时将其分配给messagekey它会给出此错误 错误 代码 CREATE STREAM ksql_test_step1 (messagekey varchar KEY, explode(payload->scores) as scores, domain varchar) WITH (kafka_topic='test_topic'

如何将自定义列分配给ksql流中的键。在步骤1中,我创建了
messagekey
列,并将其分配为
KEY
,在第二步中,我使用udf生成uuid,并在创建第二个流时将其分配给
messagekey
它会给出此错误

错误

代码

CREATE STREAM ksql_test_step1 
(messagekey varchar KEY,
explode(payload->scores) as scores,
domain varchar)
 WITH (kafka_topic='test_topic', value_format='JSON');

create stream ksql_test_step2 WITH (value_format='json') as 
select generate_uuid(id,EXTRACTJSONFIELD(scores,'$.source'),
                        EXTRACTJSONFIELD(scores,'$.code'),
                        EXTRACTJSONFIELD(scores,'$.version')) as messagekey,
                        domain
                        from ksql_test_step1  
                        emit changes;

能够通过创建一个或多个具有partition by messagekey的流来重新设置密钥。通过messagekey从ksql_test_step2分区创建流ksql_test_step3,其中(KAFKA_TOPIC='step3_KAFKA_TOPIC')作为select*;
CREATE STREAM ksql_test_step1 
(messagekey varchar KEY,
explode(payload->scores) as scores,
domain varchar)
 WITH (kafka_topic='test_topic', value_format='JSON');

create stream ksql_test_step2 WITH (value_format='json') as 
select generate_uuid(id,EXTRACTJSONFIELD(scores,'$.source'),
                        EXTRACTJSONFIELD(scores,'$.code'),
                        EXTRACTJSONFIELD(scores,'$.version')) as messagekey,
                        domain
                        from ksql_test_step1  
                        emit changes;