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 将事件计数到时间戳存储桶中的主要内容,如果未能解决你的问题,请参考以下文章

在 apache spark 中创建存储桶

石墨——如何将数据发送到时间戳超过一年的碳

将 Spark RDD 作为文本文件写入 S3 存储桶

Spark - HiveContext |错误的时间戳(减去 4 小时)

将日期添加到时间戳

将浮点列添加到时间戳类型列(秒+毫秒)