【发布时间】:2020-01-19 02:59:51
【问题描述】:
我有一个带有 X 分区的 Kafka 主题。每条消息都有一个时间戳,ts。有人可以建议我以某种方式对所有分区中的所有消息(基于ts)进行排序,并将其放入带有Y 分区的新主题(Y < X 其中Y 也可以是1)?
在此操作期间,不会将新数据添加到原始 Kafka 主题中。我试图避免将所有数据缓冲到临时数据存储中进行排序。所以基本上我正在寻找关于流数据的X-Way merge。
有人可以告诉我这是否可以在 java 中使用 Kafka Streams API 有效地完成?
【问题讨论】:
-
听起来您应该将所有分区转储到可以排序的某个数据库中
-
排序和流处理不能很好地结合在一起。我同意@cricket_007 的观点,将数据导出到某个“批处理”系统并在那里对数据进行排序可能是更好的选择。
-
@MatthiasJ.Sax - 据我所知,使用 Kafka 流进行 K-Way 合并是不可能的吗?我指的是这里提到的算法stackoverflow.com/a/47041870/785523。
-
merge()运算符不进行任何排序。比较明确说明这一点的 JavaDocs:kafka.apache.org/24/javadoc/org/apache/kafka/streams/kstream/…
标签: java apache-kafka apache-kafka-streams