我使用spark stream(scala)并在每20分钟后通过kafka接收客户呼叫到呼叫中心的记录。这些记录在rdd和更高版本的数据帧中转换为利用spark sql。我有一个商业用例,我希望识别在过去两小时内调用超过3次的所有客户。
这样做的最佳方法是什么?我应该继续在每个批次中收到的所有记录中插入所有记录,并运行一个单独的脚本来查询过去两小时内谁进行了3次调用,或者还有另外一种更好的内存功能使用spark?
感谢。
答案 0 :(得分:0)
对于这种用例,您可以使用spark获得结果(不需要配置单元)。您必须拥有一些客户唯一ID,因此您可以准备一些查询,例如
ROW_NUMBER() OVER(PARTITION BY cust_id ORDER BY time DESC) as call_count
并且您必须使用call_count=3
对过去2小时数据应用过滤器,以便获得预期结果。然后,您可以将此spark脚本设置为crontab或任何其他自动运行方法。