如何从Web UI调试和调整Spark 2.0+应用程序?

时间:2019-02-22 19:32:14

标签: apache-spark debugging apache-spark-sql

我的spark应用程序具有运行很长时间的阶段。
如图所示,舞台停留在199/200。

enter image description here

当我单击舞台并查看其任务时。我发现两项任务耗时很长,它们的随机读取大小和随机溢出(内存)比其他执行程序大得多。

enter image description here

它有两个数据框:

large_df.cache, 
small_df.cache

转换:

val df = large_df.join(broadcast(small_df))
df.filter(...)

动作:

final_df.cache
final_df.count
final_df.save(...)

有趣的是,当我添加"small_df.count" after small.cache时,阶段将不会被卡住,随机读取的大小甚至在所有执行器中都是一样的。

问题:

  1. 有人知道这个窍门吗?
  2. Shuffle溢出(内存)是否使用执行程序的执行内存?
  3. 随机播放,随机写入和随机溢出之间的关系是什么?

0 个答案:

没有答案