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

EMR 7.5中PySpark代码在Graviton实例运行失败排查

解决AWS EMR Graviton实例上PySpark Conda环境无法执行二进制文件的问题

错误cannot execute binary file和退出码126明确指向架构不兼容,即使添加了--platform-linux-aarch64仍未解决,可能是以下原因及对应解决方案:

1. 构建环境的架构与目标集群不匹配

你大概率是在x86架构机器上构建Conda环境,跨架构构建存在核心问题:

  • Conda的--platform仅控制官方包的下载架构,但pip安装的编译型依赖会默认按当前机器架构编译/下载x86版本,这类二进制文件无法在Graviton(aarch64)实例上运行。
  • 部分Conda包存在跨架构兼容瑕疵,仅靠--platform参数无法生成纯净的aarch64环境。

解决办法:
在aarch64架构机器上构建环境(比如临时启动一台r7g测试实例),执行以下步骤:

# 在Graviton实例上运行
conda create -n pyspark python=3.9 --channel conda-forge --override-channels
conda init bash
python -m pip install conda-pack
conda run -n pyspark python -m pip install -r req.txt
conda pack -n pyspark --output ./pulse-spark-deployment.tar.gz

将打包后的环境上传到S3,再提交Spark任务即可。

2. 跨架构构建时未强制pip使用aarch64架构

如果必须在x86机器上构建,需同时强制Conda和pip都采用aarch64架构:

# 全局设置Conda子目录为aarch64
conda config --set subdir linux-aarch64

# 创建aarch64架构的Conda环境
conda create -n pyspark python=3.9 --platform linux-aarch64 --channel conda-forge --override-channels

# 安装pip包时,强制下载aarch64二进制轮子
conda run -n pyspark python -m pip install --platform linux_aarch64 --only-binary=:all: -r req.txt

# 打包环境
conda pack -n pyspark --output ./pulse-spark-deployment.tar.gz

3. 验证打包环境的架构正确性

打包完成后,可通过以下步骤确认环境是否为aarch64架构:

  1. 解压tar.gz文件:tar -xzf pulse-spark-deployment.tar.gz
  2. 检查Python二进制的架构:
file ./bin/python

输出应包含ARM aarch64或64-bit ARM字样;如果显示x86-64,说明环境仍为x86架构,需重新构建。

4. 检查Spark提交命令细节

  • 确认S3路径中的<bucke>拼写正确(你当前命令存在拼写错误)
  • 确保--archives参数中的#environment别名正确,解压后确实存在./environment/bin/python路径

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.15 19:41:01