我使用create stream as select
创建了ksql流,由于某种原因,流的CSAS持久流查询为每个源记录生成4个重复记录。如何避免重复?我的设置有什么问题?
这是我的设置:
CREATE STREAM ORDERS ( ... ) WITH (
KAFKA_TOPIC='orders.prod',
VALUE_FORMAT='json'
);
此流看起来不错-按键选择,返回一条记录:
SELECT * FROM ORDERS WHERE ROWKEY = 'order-123'
1553124285000 | order-123 | ... | ... | ...
CREATE STREAM ORDERS_REKEYED WITH (PARTITIONS=6, REPLICAS=2)
AS SELECT * FROM ORDERS PARTITION BY LEGACY_ID;
现在,当查询重新生成密钥的流时,我看到4条相同的记录:
SELECT * FROM ORDERS_REKEYED WHERE ROWKEY = 'abc'
1553124285000 | abc | order-123 | ... | ... | ...
1553124285000 | abc | order-123 | ... | ... | ...
1553124285000 | abc | order-123 | ... | ... | ...
1553124285000 | abc | order-123 | ... | ... | ...
这不是我所期望的。我开始使用show queries;
查看运行查询,发现每个节点使用不同的后缀编号(例如,节点1运行CSAS_ORDERS_REKEYED_16,节点2运行CSAS_ORDERS_REKEYED_21 ...这是按节点运行查询的完整日志:
我不明白为什么我在6个节点上有4个查询(16、21、15、18)?这可能是每个输入记录具有4个相同的输出记录的原因吗?
我应该在所有节点上只有一个唯一查询吗?还是每个节点都应该使用自己的后缀号运行查询?
答案 0 :(得分:0)
我在github上提出了一个bug来跟踪此问题,因为您不是唯一强调此问题的人:https://github.com/confluentinc/ksql/issues/4111
能否让我们知道您使用的CLI / Server版本?
您还能从发生这种情况的那一刻起获取服务器日志吗?那可能超级有用。请上传到github问题。