【发布时间】:2019-08-09 11:49:59
【问题描述】:
我试图了解Distribute by 子句以及如何在Spark-SQL 中使用它来优化Sort-Merge Joins。
据我了解,Spark Sql 优化器将根据连接键(shuffle 阶段)分配两个参与表(连接)的数据集,以将相同的键放在同一分区中。如果是这样,那么如果我们在 sql 中使用distribute by,那么我们也在做同样的事情。
那么distribute by 可以通过什么方式来改善连接性能?还是在加载过程中将数据写入磁盘时最好使用distribute by,以便后续使用该数据的查询将受益于它而不必洗牌?
您能否通过一个真实示例来解释在 Spark-SQL 中使用 distribute by/cluster by 调整连接?
【问题讨论】:
标签: python apache-spark apache-spark-sql pyspark-sql