首页 文章

Kafka 流窗口批处理

提问于
浏览
0

来自Spark Streaming背景 - 掌握Kafka流 .

我有一个简单的Spark Streaming应用程序,可以从Kafka读取,

并在该分钟内返回每个用户的最新事件

示例事件看起来像 {"user": 1, "timestamp": "2018-05-18T16:56:30.754Z", "count": 3}, {"user": 1, "timestamp": "2018-05-22T16:56:39.754Z", "count": 4}

我对Kafka Streams的工作原理感兴趣,因为似乎每个事件都有一个输出 - 当我的用例是减少流量时 .

从我的阅读到目前为止,似乎这不是直截了当的,你将不得不使用处理器API .

理想情况下,我想使用DSL而不是处理器API,因为我刚刚开始查看Kafka流,但似乎我必须每隔n秒使用处理器API的 punctuate 方法从状态存储中读取?

我正在使用kafka 0.11.0

1 回答

  • 1

    在DSL级别,Kafka Streams允许配置KTable缓存(默认启用),以减少下游负载 . 缓存是一个定期刷新的LRU缓存 . 因此,虽然缓存减少了下游负载,但它并不能保证每个窗口有多少输出 . (参见https://docs.confluent.io/current/streams/developer-guide/memory-mgmt.html

    如果每个窗口严格需要单个输出,则使用Processor API是正确的方法 .

相关问题