如何使用窗口模式捕获旧日志数据的会话时间?

时间:2019-03-10 05:15:58

标签: apache-spark

我有网络日志流量。

我想按顺序从Spark集群重新处理旧的日志数据。我想捕获用户的一次用户会话,一次就可以访问这些页面。例如,某人开始浏览我们的网站,然后一个小时没有活动。那将算作一次会议。我想捕获他们连续浏览时按顺序访问的所有页面。

对于像kafka这样的流媒体源,可以在一个时间窗口内完成。但是我要重新处理可以捕获会话信息的旧日志。我可以在数据本身中使用时间戳列来模拟时间窗口处理吗?

1 个答案:

答案 0 :(得分:1)

您可以在常规数据帧上使用window()函数来完成此操作。 在org.apache.spark.sql.functions._上可用 例子

df.groupBy(window($"time", "60 minutes"), $"visitorId")
  .agg(count("sessionStartTime"))