【发布时间】:2020-05-14 00:50:38
【问题描述】:
我使用create stream as select 创建了 ksql 流,由于某种原因,流的 CSAS 持久流查询为每个源记录生成 4 个重复记录。如何避免重复?我的设置有什么问题?
这是我的设置:
- 来自底层 Kafka 主题的流:
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 ...这是节点运行查询的完整日志:
- 节点 1:CSAS_ORDERS_REKEYED_16
- 节点 2:CSAS_ORDERS_REKEYED_21
- 节点 3:CSAS_ORDERS_REKEYED_15
- 节点 4:CSAS_ORDERS_REKEYED_21
- 节点 5:CSAS_ORDERS_REKEYED_16
- 节点 6:CSAS_ORDERS_REKEYED_18
我不明白为什么我在 6 个节点上有 4 个查询(16、21、15、18)?这可能是每个输入记录有 4 个相同输出记录的原因吗?
我应该在所有节点上只有一个唯一查询吗?还是每个节点都应该使用自己的后缀编号运行查询?
【问题讨论】:
-
嗯,跨节点集群,1 个查询就可以完成这项工作。你知道,它在一个集群中。
-
@srikanth 让我澄清一下,我在一个节点上创建了一个流,它自动填充到所有 6 个节点上,因为它是一个集群。
-
他们有这方面的消息吗?我也遇到同样的问题stackoverflow.com/questions/57770983/…
标签: ksqldb