【问题标题】:Why do I see duplicates in KSQL stream?为什么我在 KSQL 流中看到重复项?
【发布时间】:2020-05-14 00:50:38
【问题描述】:

我使用create stream as select 创建了 ksql 流,由于某种原因,流的 CSAS 持久流查询为每个源记录生成 4 个重复记录。如何避免重复?我的设置有什么问题?

这是我的设置:

  1. 来自底层 Kafka 主题的流:
CREATE STREAM ORDERS ( ... ) WITH (
  KAFKA_TOPIC='orders.prod',
  VALUE_FORMAT='json'
);

这个流看起来不错 - 按键选择,返回一条记录:

SELECT * FROM ORDERS WHERE ROWKEY = 'order-123'

1553124285000 | order-123 | ... | ... | ...
  1. 重新加密流:
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


【解决方案1】:

我在 github 上提出了一个错误来跟踪这个问题,因为你不是唯一一个强调这个问题的人:https://github.com/confluentinc/ksql/issues/4111

能否请您告诉我们您使用的是哪个版本的 CLI/服务器?

您是否还能够从发生这种情况时获取服务器日志?这可能非常有用。请上传到github issue。

【讨论】:

    猜你喜欢
    • 2018-12-01
    • 2023-03-23
    • 1970-01-01
    • 2014-10-05
    • 2020-09-08
    • 2021-09-29
    • 2012-10-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多