我有网络日志流量。
我想按顺序从Spark集群重新处理旧的日志数据。我想捕获用户的一次用户会话,一次就可以访问这些页面。例如,某人开始浏览我们的网站,然后一个小时没有活动。那将算作一次会议。我想捕获他们连续浏览时按顺序访问的所有页面。
对于像kafka这样的流媒体源,可以在一个时间窗口内完成。但是我要重新处理可以捕获会话信息的旧日志。我可以在数据本身中使用时间戳列来模拟时间窗口处理吗?
答案 0 :(得分:1)
您可以在常规数据帧上使用window()函数来完成此操作。 在org.apache.spark.sql.functions._上可用 例子
df.groupBy(window($"time", "60 minutes"), $"visitorId")
.agg(count("sessionStartTime"))