Apache Spark 将事件计数到时间戳存储桶中
Posted
技术标签:
【中文标题】Apache Spark 将事件计数到时间戳存储桶中【英文标题】:Apache Spark Counts of Events into Timestamp Buckets 【发布时间】:2018-05-02 09:00:19 【问题描述】:我已将数据加载到 Spark 数据帧中,并正在使用 Spark SQL 进一步处理它。
我的问题很简单:
我有如下数据:
Event_ID Time_Stamp
1 2018-04-11T20:20..
2 2018-04-11T20:20..+1
等等。
我想获取每 2 分钟发生的事件数。
所以,
我的输出将是:
Timestamp No_of_events
2018-04-11T20:20.. 2
2018-04-11T20:20..+2 3
在 Pandas 中这很容易,但我不知道如何在 Spark SQL 中做到这一点。
上述格式数据必须以时间戳为一列,在该时间段内发生的事件数(即黑白时间戳和时间戳+2分钟)为另一列。
非常感谢任何帮助。
谢谢。
【问题讨论】:
【参考方案1】:您可以尝试使用窗口函数:
df.groupBy(window(df["Time_Stamp"], "2 minutes"))
.count()
.show()
【讨论】:
谢谢,我得到 NameError: name 'window' is not defined 可能你没有导入 org.apache.spark.sql.functions._ 对于 pyspark,从 pyspark.sql.functions 导入 * @CarlosVilchez 你能像df.groupby('TimeStamp').sum()
一样聚合吗?
@pissall,当您直接按时间戳分组时,您将其分组到毫秒。因此,您可能会拥有与行一样多的组。以上是关于Apache Spark 将事件计数到时间戳存储桶中的主要内容,如果未能解决你的问题,请参考以下文章