在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的配置?

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
전문가
답변함 6달 전

로그인하지 않았습니다. 로그인해야 답변을 게시할 수 있습니다.

좋은 답변은 질문에 명확하게 답하고 건설적인 피드백을 제공하며 질문자의 전문적인 성장을 장려합니다.

질문 답변하기에 대한 가이드라인

관련 콘텐츠