Mar*_*rko 6 apache-spark apache-spark-sql
我想执行窗口函数(具体来说是移动平均),但要在数据帧的所有列上执行。
我可以这样做
from pyspark.sql import SparkSession, functions as func
df = ...
df.select([func.avg(df[col]).over(windowSpec).alias(col) for col in df.columns])
Run Code Online (Sandbox Code Playgroud)
但恐怕这不是很有效。有没有更好的方法来做到这一点?
小智 0
另一种可能更好的替代方法是创建一个新的 df,在其中按窗口函数中的列进行分组并对剩余列应用平均值,然后执行左连接。对于 df 溢出到磁盘(或无法持久保存在内存中)的大型数据帧,这肯定会更优化。
归档时间: |
|
查看次数: |
2333 次 |
最近记录: |