在Pyspark EMR bootstrap脚本中安装Python包报great_expectations缺失如何处理
问题根因
当前脚本报错的核心原因是sudo配合--user参数的安装逻辑和EMR集群的运行用户权限不匹配:
--user参数会将Python包安装到执行命令的用户的私有家目录下,使用sudo执行时,包只会被安装到root用户的私有目录- EMR集群上作业运行时默认使用hadoop、yarn等普通用户执行,无法读取root用户家目录下的Python包,因此会触发模块找不到的报错
所需调整项
- 移除
pip install命令后的--user参数,让依赖全局安装,所有集群用户都可访问 - 明确指定pip版本为pip3,避免EMR默认环境中pip指向Python2导致的包安装版本错位问题
- 提前安装Python依赖编译所需的系统基础依赖,避免great_expectations安装过程中编译失败
修改后的脚本
#!/bin/bash # 先安装系统层面的编译依赖 sudo yum install -y python3-devel gcc gcc-c++ # 升级setuptools sudo pip3 install --upgrade setuptools # 全局安装所有Python依赖 sudo pip3 install \ pandas==0.25.1 \ awscli \ boto3 \ great_expectations
内容的提问来源于stack exchange,提问作者Tyler Norlund
相关产品推荐
相关产品推荐

