Spark SQL中groupby的最佳实践是什么?

时间:2019-03-10 05:16:57

标签: apache-spark apache-spark-sql

我有一个将多个列分组的Spark SQL。我想知道列的顺序是否与查询性能有关。

将列中具有更多不同的值放在前面会有所帮助吗?我假设groupby基于某种哈希/混洗算法。如果第一个groupby可以将数据分发到可以容纳在一台计算机中的小子集,则可以在本地完成后面的groupby。这是真的吗?

groupby的最佳实践是什么?

1 个答案:

答案 0 :(得分:2)

如您所假设的那样,

group by在列上使用哈希函数来确定哪一组按键分组将以哪个分区结尾。 您可以使用distribute by来告诉spark要使用的列-https://docs.databricks.com/spark/latest/spark-sql/language-manual/select.html

对于数据的任何其他操作(例如,较早放置更多不同的值),请注意,如果查询中有2条group by语句,则最终会产生2次混洗。而且第一个结果显然很大(因为这不是最终的汇总)。因此,我将尝试使用尽可能少的group by语句。