我使用spark 2.4和 %sql
查询表的模式。
如果我在一个大数据集上使用窗口函数,那么 ORDER BY
与 SORT BY
从查询性能的Angular 来看,会更有效吗?
我明白 ORDER BY
确保全局排序,但计算只被推到 1
减速器。然而, SORT BY
将在每个分区内排序,但分区可能接收重叠的范围。
我想知道如果 SORT BY
在这种情况下也可以使用?在处理大数据集(比如 100 M
行)?
例如。 ROW_NUMBER() OVER (PARTITION BY prsn_id ORDER BY purch_dt desc) AS RN
与 ROW_NUMBER() OVER (PARTITION BY prsn_id SORT BY purch_dt desc) AS RN
有人能帮忙吗。谢谢。
2条答案
按热度按时间72qzrwbm1#
不管你是否使用
SORT BY
或者ORDER BY
. 有一个关于Hive的概念,你可能是指,但你使用的Spark,没有这样的问题。为了
partition BY
…只有在没有任何分区的情况下,1 reducer方面才是一个问题。你有身份证,所以没问题。ao218c7q2#
sort by
应用于每个bucket,并不保证对整个数据集进行排序。但是order by
应用于整个数据集(在单个缩减器中)。因为您的查询是针对每个分区键进行分区和排序/排序的,所以这两种用法返回相同的输出。