我们有一个用例,在这个用例中,我们每天在Kafka得到数百万个事件。每个事件都是这样的:
{“id”:123,“state”:“start/in transit/stop”,“ts”:“01-02-2021 12:00:00”}
因此,对于每个id,我们可以有多个事件。
我们需要生成警报,以防在xx天后这些事件流中没有收到特定id的任何一个状态。例如id 123,如果我们在5天后没有收到在途事件。
一种方法是将所有内容存储在数据湖中,并在其上连续运行spark作业。
我的问题是:我们是否可以在xx天后为每个id安排作业,并使用kafka授权它,使其成为分布式的。
这样做,我们将不会连续轮询和检查是否违反警报条件,而是将作业安排在特定时间,我们可以查询警报条件。
1条答案
按热度按时间ct3nt3jp1#
您可以创建一个压缩的进行中事件主题,该主题存储所有的开始/进行中状态,其中stop是delete,以从ktable中删除id。
但是,仍然需要每秒扫描一次表,以验证任何时间戳都没有超出其窗口