首页 > 解决方案 > PySpark - 在 GroupedData 和输出直方图上应用自定义函数

问题描述

我有一个与此类似的结构的大型 PySpark DataFrame:

城市 店铺 machine_id 数字值 时间
伦敦 一个 1 X 2021 年 1 月 1 日 14:15:00
伦敦 一个 2 是的 2021 年 1 月 1 日 14:17:00
纽约 9 z 2021 年 1 月 1 日 16:12:00
伦敦 一个 1 w 2021 年 1 月 1 日 14:20:00
伦敦 一个 2 q 2021 年 1 月 1 日 14:24:00
. . . . .
. . . . .

我想将数据拆分为时间窗口(例如 10 分钟)并计算每个 machine_id 的一些统计数据(平均值、方差、不同值的数量和其他自定义函数),并根据城市和商店的组合输出该统计数据的直方图. 例如,对于每个 city_store 组合,“numeric_value”在 10 分钟的时间窗口内的方差直方图。

到目前为止,我使用groupby来获取按我需要的列分组的数据 -

interval_window = pyspark.sql.functions.window("time", '10 minutes')
grouped_df = df.groupBy('city', 'store', 'machine_id', interval_window)

从这里我使用agg应用了一些 pyspark.sql.functions(如 var、mean..),但我想知道如何在 GroupedData 对象上应用自定义函数,以及如何输出每个城市和商店的结果直方图。我不认为我可以将它转换为 pandas DF,因为这个 DataFrame 非常大,不适合主人。

我是 spark 的初学者,所以如果我没有使用正确的对象/函数,请告诉我。

谢谢!

标签: pythonapache-sparkpyspark

解决方案


推荐阅读