诊断 Spark 中的长阶段

首先确定作业的最长阶段。 滚动到作业页面底部的阶段列表,并按持续时间对它们进行排序:

长阶段

阶段 I/O 详细信息

若要查看有关此阶段所执行操作的概要数据,请查看“输入”、“输出”、“随机读取”和“随机写入”列

长阶段 I/O

这些列的含义如下:

  • 输入:此阶段从存储中读取了多少数据。 这可能是从 Delta、Parquet、CSV 等进行读取。
  • 输出:此阶段将多少数据写入了存储。 这可能是对 Delta、Parquet、CSV 等进行写入。
  • 随机读取:此阶段读取了多少随机数据
  • 随机写入:此阶段写入了多少随机数据

如果不熟悉 Shuffle 的含义,现在正是学习的大好时机。

记下这些数字,因为稍后可能需要用到它们。

任务数

长阶段中的任务数可能指明了问题的调查方向。 在此处可以通过查看以下信息来确定任务数:

确定任务数

如果只看到了一个任务,该任务可能是问题的原因。 有关详细信息,请参阅一个 Spark 任务

查看更多阶段详细信息

如果阶段有多个任务,应该进一步调查。 单击阶段说明中的链接,获取有关最长阶段的详细信息:

打开阶段信息

你现在已在阶段页面,请参阅倾斜和溢出