一项 Spark 任务

如果看到一个长时间运行的阶段只有一个任务,这很可能就是问题的迹象。 当一项任务正在运行时,仅使用一个 CPU,群集的其余部分可能处于空闲状态。 此问题最常发生在以下情况下:

  • 小规模数据的 UDF 成本高昂
  • 不使用 PARTITION BY 语句的 Window 函数
  • 从不可拆分的文件类型进行读取。 这意味着该文件无法分多个部分读取,因此最终会面临一项艰巨的任务。 Gzip 是一个不可拆分文件类型的示例。
  • 读取 JSON 或 CSV 文件时设置 multiLine 选项
  • 大文件的架构推理
  • 使用 repartition(1) 或 coalesce(1)