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

EMR引导脚本安装petastorm失败问题求助

在EMR 5.33.1中安装petastorm==0.12.1时卡在pyspark安装的解决方法

环境与原安装流程

  • 环境:EMR 5.33.1,Python 3.7.16
  • 目标:安装petastorm==0.12.1
  • 原可行步骤:
    1. 将petastorm及所有依赖包上传至S3文件夹
    2. 执行命令复制包到本地临时文件夹:
      aws s3 cp s3_whl_files_path ./tmpfolder/ --recursive --region=<region-name>
      
    3. 执行本地离线安装:
      sudo python3 -m pip install --no-index --find-links=./tmpfolder petastorm==0.12.1
      

当前问题

  • 引导脚本日志node/stdout.gz显示安装卡在处理./tmpfolder/pyspark-2.4.7.tar.gz,无"successfully installed petastorm"输出,node/stderr.gz无报错
  • 应用日志containers/stdout.gz提示ModuleNotFoundError: No module named 'petastorm'

已尝试操作

  • 补充安装未成功的依赖包,依赖安装成功但仍找不到petastorm模块,pyspark依旧未完成安装
  • 在bootstrap.sh中单独添加pyspark安装步骤,问题未解决
  • 安装py4j成功,pyspark安装停滞问题依旧

问题原因分析

EMR自带的pyspark属于Spark分发包的一部分,并非通过pip安装到Python环境中的包,因此pip无法识别系统中已存在的pyspark,会严格按照petastorm的依赖列表尝试重新安装。而pyspark-2.4.7.tar.gz是源码包,安装时需要解压、配置等操作,在EMR节点上可能因资源限制、权限问题或处理耗时过长导致安装停滞,进而中断整个petastorm的安装流程。

解决方案

1. 强制跳过pyspark安装

在pip安装命令中添加--ignore-installed pyspark参数,让pip忽略已存在的pyspark,直接安装petastorm及其他依赖:

sudo python3 -m pip install --no-index --find-links=./tmpfolder --ignore-installed pyspark petastorm==0.12.1

2. 使用预编译wheel包替代源码包

检查S3中的依赖包,尽量使用.whl格式的预编译包替换.tar.gz源码包。源码包需要额外编译步骤,更容易在EMR节点上出现安装停滞问题。

3. 开启详细日志排查停滞原因

如果仍出现停滞,添加-vvv参数输出详细安装日志,定位具体停滞环节:

sudo python3 -m pip install --no-index --find-links=./tmpfolder --ignore-installed pyspark petastorm==0.12.1 -vvv

4. 确认pip与EMR Python环境一致

EMR可能存在多个Python版本,确保使用的python3是Spark关联的Python环境,可使用绝对路径执行pip:

sudo /usr/bin/python3 -m pip install --no-index --find-links=./tmpfolder --ignore-installed pyspark petastorm==0.12.1

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.19 19:27:58