在spark上下文中创建一个计时器

时间:2016-05-11 14:24:29

标签: java apache-spark apache-kafka bigdata

我们有一个来自Kafka的Spark应用程序,并消耗客户活动。我正在尝试确定客户是否已停止在我们的系统上活动3分钟(即没有收到该客户的另一笔交易3分钟)。

我不确定我是否正在尝试以正确的方式实现此方法,或者如果在Spark中使用此逻辑没有意义,但我尝试使用RecurringTimer类来执行此操作。有没有人实现类似的东西,如果是的话,在spark库中使用了什么效用函数?

任何示例,指针等也将非常感激

1 个答案:

答案 0 :(得分:1)

看一下mapWithState,基本上你会聚合成一个键/值对,其中包含一个客户的标识符和最后一次收到的交易的时间戳。

执行此聚合后的每个微批次,您可以检查并查看其中是否有任何具有timestamp < now() - 3min的用户并执行某些操作(即将邮件推送到另一个kafka队列等)

mapWithState上的示例可用here