apache-kafka - Kafka Streams reduceByKey 与 leftJoin

标签 apache-kafka apache-kafka-streams

乍一看,在我看来,使用 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/

相关文章:

apache-kafka - Spark Streaming 应用程序因 KafkaException : String exceeds the maximum size or with IllegalArgumentException 而失败

java - 是否可以对 GlobalKTable 进行 ReKey?

java - 用于添加全局存储的 Kafka 流用例

java - Confluent Cloud 上的 Kafka 流 : 'segment.ms' with value '600000' exceeded min limit of 14400000 for internal repartition topic

apache-kafka - 如何从 KTable 中获取排序后的 KeyValueStore?

docker - 在Kafka as上出现错误,并且使用者无法从主题中读取内容-/10.2.***.*身份验证失败(SSL握手失败)

Python:如何为单元测试模拟kafka主题?

apache-kafka - 按键加入多个Kafka主题

java - Kafka主题以及本地数据库的Kafka偏移量管理

apache-kafka-streams - 卡夫卡流(抑制): Restarting the Topology