我的系统中有一些主题存储给定实体的事件。现在我想对事件日志进行一些分析。因此,我需要查询特定时间段内属于某个实体的所有事件。是否可以使用kafka流在时间窗口内聚合某个键的所有事件?
f4t66c6m1#
这实际上取决于你想如何设置你的系统,你想做什么样的分析,以及你所说的“查询”到底是什么意思对于一次性分析,您可能只想 stream.transform(...).to() 并根据键和时间戳进行过滤( context.timestamp() 是你的朋友)在你的 Transformer 把结果写进主题里。因此,您将在某个键和时间范围内运行此程序一次。也许你甚至可以在写任何结果之前做必要的分析 WindowStore (启用复制)以缓冲存储中的所有数据)。如果您想编写一个程序来准备**所有*数据进行分析,您可以使用 groupBy() (或 grouByKey() ). 使用 windowedBy() 与 TimeWindows 只有你的作品知道的时间范围,你想分组的数据提前(例如,每小时,或每天,或类似的)。对于聚合本身,可以返回 List<Value> 对象并累积每个键和窗口的相应记录。这样,您就可以使用iq通过一次查找获得指定键和窗口的所有记录。
stream.transform(...).to()
context.timestamp()
Transformer
WindowStore
groupBy()
grouByKey()
windowedBy()
TimeWindows
List<Value>
eblbsuwk2#
听起来你只是想 groupByKey dsl方法
groupByKey
2条答案
按热度按时间f4t66c6m1#
这实际上取决于你想如何设置你的系统,你想做什么样的分析,以及你所说的“查询”到底是什么意思
对于一次性分析,您可能只想
stream.transform(...).to()
并根据键和时间戳进行过滤(context.timestamp()
是你的朋友)在你的Transformer
把结果写进主题里。因此,您将在某个键和时间范围内运行此程序一次。也许你甚至可以在写任何结果之前做必要的分析WindowStore
(启用复制)以缓冲存储中的所有数据)。如果您想编写一个程序来准备**所有*数据进行分析,您可以使用
groupBy()
(或grouByKey()
). 使用windowedBy()
与TimeWindows
只有你的作品知道的时间范围,你想分组的数据提前(例如,每小时,或每天,或类似的)。对于聚合本身,可以返回List<Value>
对象并累积每个键和窗口的相应记录。这样,您就可以使用iq通过一次查找获得指定键和窗口的所有记录。eblbsuwk2#
听起来你只是想
groupByKey
dsl方法