apache-kafka - Kafka Streams - Streams App 中存储在内存和磁盘中的内容

标签 apache-kafka apache-kafka-streams

我是 Kafka Streams 的新手,我一直在阅读 documentation关于如何设置 Kafka Streams 应用程序。

不过,我不清楚数据是如何处理的——什么存储在内存中,什么存储在磁盘上。我在某处看到 RocksDB 提到过,但在流文档中没有。

我试图解决的问题如下。我有 2 个 Kafka 主题,都是键值存储类型,它们为每个键保留最旧的值。在我的流应用程序中,我想加入两个主题并将连接输出回 kafka,稍后可以由某些接收器使用。我担心的是不清楚如何执行连接。这两个主题都将有 GB 的数据,因此不可能适合 Streams App 内存。

最佳答案

您可以将每个主题阅读为 KTable并进行表表连接:

KTable table1 = builder.table("topic-1");
KTable table2 = builder.table("topic-2");

KTable joinResult = table1.join(table2, ...);
joinResult.to("output-topic");

有关更多详细信息,请参阅:
http://docs.confluent.io/current/streams/developer-guide.html#ktable-ktable-join
另请查看示例:https://github.com/confluentinc/examples/tree/3.3.0-post/kafka-streams

对于运行时,这两个主题都将在 RocksDB 状态存储中具体化。 RocksDB 能够溢出到磁盘。另请注意,单个 RocksDB 实例只需要保存单个输入分区的数据。比较 http://docs.confluent.io/current/streams/architecture.html#parallelism-model

关于apache-kafka - Kafka Streams - Streams App 中存储在内存和磁盘中的内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45834725/

相关文章:

apache-kafka - Kafka Consumer poll() 方法被阻塞

java - 使用 Java 代码重新平衡 Storm 拓扑

java - Kafka DSL Kstream-> Ktable Join-连接的序列化编译错误

apache-kafka - 无法锁定任务 0_13 的状态目录

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

apache-kafka - 镜像重新分区主题的大小不断增加

sql-server - 从 Kafka feed 读入 SQL Server

apache-kafka - 如何检查主题是否被Kafka中的消费者消费

azure - Kafka 连接器可以与事件中心代理一起使用吗?

apache-kafka - 从消费者开始时从主题中获取最新值,然后正常继续