使用KSQL并执行左外部联接,我可以看到有时联接发出的联接结果不止一次。
换句话说,相同的联接结果被发射多次。我不是在谈论在右侧具有null值的联接版本和没有null值的版本。从字面上看,一次联接产生的同一记录会发出多次。
我想知道这是否是预期的行为。
答案 0 :(得分:2)
一般答案是肯定的。 kafka是至少一次的系统。 更具体地说,某些情况可能导致重复:
您是否在日志中看到任何此类崩溃/超时?
您可以尝试使用一些kafka功能来减少发生这种情况的可能性:
enable.idempotence
设置为true(请参阅https://kafka.apache.org/documentation/#producerconfigs)-会产生一些开销transactional.id
,以防您跨机器故障转移-大规模管理变得复杂isolation.level
设置为read_committed
-增加延迟(需要与上述2结合使用)auto.commit.interval.ms
-只是减少了重复的时间,并没有真正解决任何问题。以非常低的值产生开销。