一项 Spark 任务
如果看到一个长时间运行的阶段只有一个任务,这很可能就是问题的迹象。 当一项任务正在运行时,仅使用一个 CPU,群集的其余部分可能处于空闲状态。 此问题最常发生在以下情况下:
- 小规模数据的 UDF 成本高昂
- 不使用
PARTITION BY
语句的 Window 函数
- 从不可拆分的文件类型进行读取。 这意味着该文件无法分多个部分读取,因此最终会面临一项艰巨的任务。 Gzip 是一个不可拆分文件类型的示例。
- 读取 JSON 或 CSV 文件时设置
multiLine
选项
- 大文件的架构推理
- 使用 repartition(1) 或 coalesce(1)