作业长时间处于ACCEPTED 状态
原因:YARN 队列资源不足,作业排队等待。
处理:通过yarn queue -status <queue> 查看队列使用率,确认队列资源上限与当前运行作业;降低本作业的资源申请(Executor 数量/内存)或联系集群管理员调整队列配额。
ClassNotFoundException 类找不到
原因:应用依赖jar 未随作业分发。
处理:将依赖jar 通过 --jars 一并提交;或使用 spark-submit 的--packages 从仓库拉取;Python 作业使用 --py-files 提交依赖。
Executor OOM / Driver OOM
原因:Executor OOM 常见于数据倾斜、缓存过大或单分区数据量过大;Driver OOM 常见于 collect 大结果集到 Driver。
处理:先通过Web UI 定位是否存在倾斜 Stage;调大相应内存(spark.executor.memory / spark.driver.memory);避免 collect 大数据量,改用 take 或直接落表。
Shuffle 阶段特别慢
原因:分区数不合理、序列化开销大或磁盘IO 压力大。
处理:调整spark.sql.shuffle.partitions;启用 KryoSerializer;调大 spark.shuffle.file.buffer 与 spark.reducer.maxSizeInFlight;确认 AQE 开启以自动合并小分区。
INSERT 时报类型转换异常
原因:Spark 3.0 起默认 storeAssignmentPolicy 为 ANSI,不允许部分不合理的类型强制转换(如 string 转 timestamp)。
处理:执行set spark.sql.storeAssignmentPolicy=LEGACY; 切回宽松策略后重试,或修正数据类型后插入。
Kerberos 认证失败
原因:票据过期或未完成kinit 认证。
处理:通过klist 检查票据状态,重新执行 kinit -kt 完成认证;长周期作业需确认 keytab 与 principal 配置正确。