在EMR中使用Spark提示找不到Python模块

0

【以下的问题经过翻译处理】 我正在尝试在EMR上运行一个Python作业,其中一些依赖项已通过venv安装,如下所示:

python -m venv pyspark_venv
source pyspark_venv/bin/activate
pip install pyarrow pandas venv-pack
venv-pack -o pyspark_venv.tar.gz

并且作业通过以下配置运行:

{
   "spark.yarn.appMasterEnv.PYSPARK_PYTHON":"./environment/bin/python",
   "spark.yarn.appMasterEnv.PYSPARK_DRIVER_PYTHON":"./environment/bin/python",
   "spark.yarn.dist.archives":"s3://DOC-EXAMPLE-BUCKET/prefix/my_pyspark_venv.tar.gz#environment",
   "spark.submit.deployMode":"cluster"
}

但是当我运行作业时,提示“ no module named Pandas”的错误。在本地脚本使用相同的venv运行,打印sys路径表明似乎spark在使用系统Python而非venv。

有没有什么办法可以使用venv的配置?

profile picture
专家
已提问 5 个月前32 查看次数
1 回答
0

【以下的回答经过翻译处理】 问题是EMR Spark作业不能找到虚拟环境中安装的包,为确保Spark使用虚拟环境中的Python环境,可以尝试以下步骤:

  1. 添加以下内容到EMR Spark作业配置中,确保Spark使用虚拟环境中的Python二进制文件:
"spark.executorEnv.PYTHONHASHSEED":"0"
  1. 在PySpark代码中,添加以下行以显式设置所使用的Python环境:
import os
os.environ['PYSPARK_PYTHON'] = './environment/bin/python'
os.environ['PYSPARK_DRIVER_PYTHON'] = './environment/bin/python'
  1. 确保pyspark_venv.tar.gz文件已上传到S3存储桶,并具有读取权限。
  2. 通过检查yarn/userlogs目录中的日志,验证虚拟环境是否已成功加载。
profile picture
专家
已回答 5 个月前

您未登录。 登录 发布回答。

一个好的回答可以清楚地解答问题和提供建设性反馈,并能促进提问者的职业发展。

回答问题的准则