Function 窗口聚合还是正常聚合?

Function 窗口聚合还是正常聚合?,function,apache-spark,window,Function,Apache Spark,Window,我的桌子总共有8107行 假设我在带有窗口的列上按“国家”查找“平均(海拔)”组,我得到输出: avg = ap.withColumn('avg_alt',mean(ap.altitude).over(Window.partitionBy(ap.country))) 邮政编码:8107行 spark.sql也是如此- select avg(altitude) from table group by country o/p:240行 哪个是正确的输出 我应该使用Windows还是普通sql 两

我的桌子总共有8107行

假设我在带有窗口的列上按“国家”查找“平均(海拔)”组,我得到输出:

avg = ap.withColumn('avg_alt',mean(ap.altitude).over(Window.partitionBy(ap.country)))
邮政编码:8107行

spark.sql也是如此-

select avg(altitude) from table group by country
o/p:240行

哪个是正确的输出

我应该使用Windows还是普通sql


两者在技术上都是正确的,但window为每一行提供的输出都是正确的,它们只是在输出格式上有所不同。正如您正确提到的,窗口方法将把平均高度附加到数据帧的每一行,而SQL group by方法将只具有每个国家的平均高度。
在大多数情况下,您只想使用分组和聚合结果(例如,如果您想绘制结果,或显示最高/最低国家等)。
如果你想做进一步的计算,窗口进近应该是最好的(例如,如果你想找到与平均高度差异最大的位置)