火花流和火花sql考虑因素

时间:2018-05-03 05:21:45

标签: scala apache-spark apache-spark-sql spark-dataframe spark-streaming

我使用spark stream(scala)并在每20分钟后通过kafka接收客户呼叫到呼叫中心的记录。这些记录在rdd和更高版本的数据帧中转换为利用spark sql。我有一个商业用例,我希望识别在过去两小时内调用超过3次的所有客户。

这样做的最佳方法是什么?我应该继续在每个批次中收到的所有记录中插入所有记录,并运行一个单独的脚本来查询过去两小时内谁进行了3次调用,或者还有另外一种更好的内存功能使用spark?

感谢。

1 个答案:

答案 0 :(得分:0)

对于这种用例,您可以使用spark获得结果(不需要配置单元)。您必须拥有一些客户唯一ID,因此您可以准备一些查询,例如

ROW_NUMBER() OVER(PARTITION BY cust_id ORDER BY time DESC) as call_count

并且您必须使用call_count=3对过去2小时数据应用过滤器,以便获得预期结果。然后,您可以将此spark脚本设置为crontab或任何其他自动运行方法。