我的表总共有8107行。
假设我在具有输出的Window列上按“国家”找到“ avg(海拔高度)”分组:
avg = ap.withColumn('avg_alt',mean(ap.altitude).over(Window.partitionBy(ap.country)))
o / p:8107行
与spark.sql-
相同select avg(altitude) from table group by country
o / p:240行
哪个是正确的输出?
我应该使用window还是普通的sql?
从技术上来讲,两者都是正确的,但是窗口为每一行给出了
答案 0 :(得分:0)
两个输出都是正确的,只是输出格式不同。就像您正确提到的那样,窗口方法会将平均高度附加到数据框的每一行,而SQL分组方法将仅具有每个国家/地区的平均高度。
在大多数情况下,您只想使用分组和汇总的结果(例如,要绘制结果,或显示最高/最低的国家/地区等)
如果您想进行进一步的计算,则最好采用窗口方法(例如,如果要查找与平均海拔高度差异最大的位置)。