我正在通过id加入2个大表(数十亿甚至数亿行)。如,
table1.join(table2, Seq("id"))
我的星火工作很快就达到了这一点#34;
Stage 19: 60000/60001 (1 running)
问题是这1个正在运行的工作需要几个小时,比其他工作多一个数量级。
==>如何确定哪个"键"在连接中导致长时间运行的作业?
==>有没有办法写入执行程序的stdout以提供更多的调试信息?
答案 0 :(得分:2)
由于您基于列Id
加入我遵循的一个简单的事情是计算Id的最大出现次数。
df.groupBy("id").count.sort(desc("count")).take(10).foreach(println)
这将为您提供前10个“id”,其中包含数据集中的最大出现次数。