【发布时间】:2020-06-28 13:27:27
【问题描述】:
如何重新采样 pyspark 数据帧,就像在 pandas 中我们有 pd.grouper 和 pd.resample 一样,我可以在 h、2h、3h、week 上重新采样。我有以下示例 pyspark 数据框,我如何在列 ind 和 date 以及 every h/2h/3h
上聚合它>from pyspark import SparkContext
from pyspark.sql import SQLContext
sc = SparkContext.getOrCreate()
sqlContext = SQLContext(sc)
a = sqlContext.createDataFrame([["Anand", "2020-02-01 16:00:00", 12, "ba"],
["Anand", "2020-02-01 16:05:00", 7, "ba" ]
["Anand", "2020-02-02 19:10:00", 14,"sa"],
["Carl", "2020-02-01 16:00:00", 16,"da"],
["Carl", "2020-02-02 16:02:00", 12,"ga"],
["Carl", "2020-02-02 17:10:00", 1,"ga"],
["Eric", "2020-02-01 16:o0:00", 24, "sa"]], ['ind',"date","sal","imp"])
a.show()
| ind| date|sal|imp|
+-----+-------------------+---+---+
|Anand|2020-02-01 16:00:00| 12| ba|
|Anand|2020-02-01 16:05:00| 7| sa|
|Anand|2020-02-02 19:10:00| 14| sa|
| Carl|2020-02-01 16:00:00| 16| da|
| Carl|2020-02-01 16:02:00| 12| ga|
| Carl|2020-02-02 17:10:00| 1| ga|
| Eric|2020-02-01 16:00:00| 24| sa|
因此,当聚合列 ind 并在 date(everyhour) 和 mean 的 sale 上重新采样时,期望输出可能看起来像
| ind| date|sal|
+-----+-------------------+---+
|Anand|2020-02-01 16:00:00| 9|
|Anand|2020-02-02 19:00:00| 14|
| Carl|2020-02-01 16:00:00| 9|
| Carl|2020-02-02 17:00:00| 1|
| Eric|2020-02-01 16:00:00| 24|
【问题讨论】: