在EMR 6.13.0运行PySpark脚本时遭遇Virtualenv执行失败错误
EMR 6.13.0 PySpark Virtualenv 错误修复方案
问题根源
你的bootstrap脚本里有一行错误的venv命令:
sudo python3 -m venv -d /usr/bin/virtualenv all
python3 -m venv并不支持-d参数,且你混淆了venv模块与virtualenv工具的用法,导致系统中virtualenv未正确配置,最终引发PySpark调用/usr/bin/virtualenv时失败。
修正步骤
1. 重写正确的bootstrap脚本
删除错误命令,改用标准安装流程,脚本如下:
#!/bin/bash sudo yum update -y # 先安装virtualenv工具 sudo python3 -m pip install virtualenv # 安装所有依赖包 sudo python3 -m pip install pandas PyDictionary numpy nltk boto3 pyarrow venv-pack # 下载NLTK全量数据 sudo python3 -m nltk.downloader -d /usr/share/nltk_data all
若需预先创建特定路径的virtualenv环境,可在脚本末尾添加(按需调整路径):
sudo virtualenv -p python3 /usr/bin/virtualenv/my_custom_env
2. 验证virtualenv安装状态
在EMR主节点执行以下命令,确认工具正常可用:
which virtualenv virtualenv --version
正常情况下会输出/usr/bin/virtualenv路径及对应版本号。
3. 调整PySpark运行配置(可选)
若PySpark任务依赖自动创建virtualenv,提交任务时需明确指定virtualenv路径:
spark-submit \ --conf spark.pyspark.virtualenv.enabled=true \ --conf spark.pyspark.virtualenv.type=virtualenv \ --conf spark.pyspark.virtualenv.bin.path=/usr/bin/virtualenv \ your_spark_script.py
注意事项
EMR 6.13.0默认搭载Python 3.7,安装依赖时需注意版本兼容性,避免因依赖包版本过高导致安装失败。
内容的提问来源于stack exchange,提问作者Supriya R
相关产品推荐
相关产品推荐

