使用 SQL 窗口函数代替 join 和 groupBy - AWS 规范性指导

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

使用 SQL 窗口函数代替 join 和 groupBy

窗口函数 (Spark 文档)对一组与当前记录有某种关联的行(称为窗口)执行计算。例如,它们可以与当前行位于同一个分区或框架中。窗口函数内置于 Spark 中,它们类似于聚合函数。聚合函数(例如SUMMAX)对一组行进行运算,并为每个组计算一个返回值。窗口函数对于处理任务很有用,例如计算移动平均线或根据当前行的相对位置访问行的值。

这些区域有:Spark groupBy函数将数据收集成组,并对分组的数据执行聚合函数。当你使用时groupBy,Spark 先对数据进行部分聚合,然后对简化的数据集进行洗牌。使用窗口函数时,会对整个数据集进行洗牌。窗口函数可以提供更快的运行时间。

在非常大的数据集中,如果列的基数很大,则建议使用窗口函数。但是,如果列的基数较小,则数据聚合较小,并且可以在联接中广播聚合结果。