Spark中任意粒度的聚合

时间:2016-04-10 10:28:32

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

我尝试使用这种简单的结构在DataFrame中进行聚合:

+--------------------+---------+---------+
|                date|    data1|    data2|
+--------------------+---------+---------+
|2016-01-30 00:10:...|   0.0596|   0.5385|
|2016-01-30 00:20:...|  0.05578|   0.5385|
|2016-01-30 00:30:...|  0.03375|   0.5055|
|2016-01-30 00:40:...|   0.0379|  0.51266|
|2016-01-30 00:50:...|  0.05471|   0.5345|
|2016-01-30 01:00:...|   0.0926|  0.54833|
......

我需要按日期聚合(SUM)data1和data2,具有任意粒度(例如,每天,每小时,每周,12小时......)。

我每天都设法做到这一点:

SELECT TO_DATE(date) as date, SUM(data1) as data1, SUM(data2) as data2
FROM my_table
GROUP BY TO_DATE(date)

这很好用,但我不知道如何实现其他聚合。

1 个答案:

答案 0 :(得分:1)

您可以尝试以下内容:

SELECT concat(to_date(date), ':', hour(date)) as date_hour
  ...
GROUP BY date_hour

甚至

SELECT to_date(date), hour(date)
  ...
GROUP BY to_date(date), hour(date)