本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
使用 SQL 窗口函数代替 join 和 groupBy
窗口函数SUM
或MAX
)对一组行进行运算,并为每个组计算一个返回值。窗口函数对于处理任务很有用,例如计算移动平均线或根据当前行的相对位置访问行的值。
这些区域有:Spark groupBy
函数将数据收集成组,并对分组的数据执行聚合函数。当你使用时groupBy
,Spark 先对数据进行部分聚合,然后对简化的数据集进行洗牌。使用窗口函数时,会对整个数据集进行洗牌。窗口函数可以提供更快的运行时间。
在非常大的数据集中,如果列的基数很大,则建议使用窗口函数。但是,如果列的基数较小,则数据聚合较小,并且可以在联接中广播聚合结果。