如何找到偏斜的分区(加入大表时)?

时间:2017-09-19 18:19:15

标签: apache-spark apache-spark-sql

我正在通过id加入2个大表(数十亿甚至数亿行)。如,

table1.join(table2, Seq("id"))

我的星火工作很快就达到了这一点#34;

Stage 19: 60000/60001 (1 running)

问题是这1个正在运行的工作需要几个小时,比其他工作多一个数量级。

==>如何确定哪个"键"在连接中导致长时间运行的作业?

==>有没有办法写入执行程序的stdout以提供更多的调试信息?

1 个答案:

答案 0 :(得分:2)

由于您基于列Id

加入

我遵循的一个简单的事情是计算Id的最大出现次数。

df.groupBy("id").count.sort(desc("count")).take(10).foreach(println)

这将为您提供前10个“id”,其中包含数据集中的最大出现次数。