You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

AWS EMR中Spark Step执行失败(退出码13),求问题排查

排查AWS EMR PySpark Step退出码13问题

我来帮你拆解下这个问题——YARN的退出码13通常和内存资源不足、代码逻辑错误或者权限/路径问题有关,结合你的操作和代码,咱们一步步定位:

1. 先修正代码里的明显错误

你这段代码里有个容易忽略的问题:df = spark.createDataFrame(mylist, IntegerType()).show() 中,show()方法的返回值是None,不是DataFrame对象!这会导致后面执行df.write.parquet时直接抛出AttributeError,因为None没有write属性。

修正后的代码应该把show()单独调用:

from pyspark.sql.types import IntegerType
mylist = [1, 2, 3, 4]
df = spark.createDataFrame(mylist, IntegerType())
df.show()  # 单独执行show(),不赋值给df
df.write.parquet('s3://your-bucket/path/to/save', mode='overwrite')

2. 检查路径配置

你写的/path/to/save如果是本地路径,在Cluster部署模式下会有问题:Application Master运行在集群的某个节点上,本地路径仅对该节点可见,而且可能没有写入权限。推荐直接使用S3路径(格式为s3://bucket-name/xxx)或者HDFS路径(hdfs:///xxx),同时要确保:

  • EMR的实例角色(EC2 Instance Profile)拥有对应S3桶的读写权限
  • 如果用HDFS路径,确认路径存在且Spark有写入权限

3. 调整YARN/Spark内存参数

退出码13很常见的原因是Application Master的内存不足,你在添加Step时留空了附加参数,默认的内存配置可能无法满足需求。可以在Step的“附加参数”中添加以下配置(根据你的集群实例类型调整数值):

--conf yarn.app.mapreduce.am.resource.mb=2048 --conf spark.driver.memory=2g --conf spark.executor.memory=2g

比如如果你的集群用的是m5.xlarge实例(16G内存),可以把数值调到4G左右。

4. 查看详细日志定位问题

如果上面的调整还是没解决,你可以去EMR控制台的“步骤”页面,点击失败的步骤,查看“日志链接”,在YARN的Application Master日志里找具体的错误栈,这能帮你更精准地定位问题(比如是权限报错还是内存溢出)。

内容的提问来源于stack exchange,提问作者Thagor

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.14 06:27:03