python - 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 的初学者,所以如果我没有使用正确的对象/函数,请告诉我。
谢谢!
解决方案
推荐阅读
- r - 如何在 Shiny 应用程序中动态调整 iframe 高度
- testing - 在 TDD 中,当要测试的函数未定义时,如何先编写测试?
- vue.js - Amcharts 自定义工具提示延迟渲染
- php - 尝试在 Google Cloud Console 上设置错误报告后,VM 实例上出现 HTTP 500 错误
- node.js - Mongoose .populate() 无法正常工作
- python - os.path.exists 返回 False,但 os.path.abspath 返回路径
- python - Django 3.1 - 在进行或应用迁移之前使用 ORM 类模型时出现“OperationalError:没有这样的表”
- docker - Docker托管多个具有不同IP地址但在同一端口上的容器
- r - 具有两个数据集的 ggplot 并排条形图
- java - JPA,postgres:无法将数据转换为类