乍一看,在我看来,使用 KStream#reduceByKey
可以实现与使用 KStream to KTable leftJoin
相同的功能。即用相同的键组合记录。两者在性能方面有什么区别?
最佳答案
简短回答:(两者有什么区别?)
reduceByKey
应用于单个输入流,而 leftJoin
组合两个流/表。
长答案:
如果我正确理解您的问题,您传入的 KTable
变更日志流似乎为空,并且您想要计算新的联接结果(即更新结果 KTable
>) 对于每个传入的 KStream
记录?连接的结果 KTable
不可用裁剪化 View ,但只会向下游发送变更日志主题。因此,您的输入 KTable
将始终为空,并且您的输入 KStream
记录将始终以“无”连接(因为左连接),这不会真正更新结果KTable
。您还可以执行 KStream#map()
——如果您的输入 KTable
不提供状态,则您无法利用任何状态。
相反,如果您使用reduceByKey
,则结果KTable
可作为物化 View 使用,因此对于每个KStream
输入记录,之前的结果值可以更新。
因此,这两种操作本质上是不同的。如果您有一个使用连接(需要两个输入)的单个输入KStream
,那会很奇怪,因为没有KTable
...
关于apache-kafka - Kafka Streams reduceByKey 与 leftJoin,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39438024/