安装google-ads后Data Proc集群连接GCS Bucket失败求助
问题分析
这个错误源于google-ads包与其他GCP客户端库的google-auth依赖版本冲突:
安装google-ads时,它会自动拉取或升级google-auth至自身要求的版本,而该版本与google-cloud-storage等库依赖的google-auth版本不兼容,导致google.auth.credentials模块缺失CredentialsWithTokenUri属性,最终影响GCS连接。
解决方案
方法1:强制锁定兼容的google-auth版本
找到同时满足所有安装包依赖的google-auth版本,添加到PIP_PACKAGES中强制锁定:
根据各包的依赖要求:
- google-cloud-bigquery==3.10.0 要求 google-auth>=2.14.0
- google-cloud-storage==2.8.0 要求 google-auth>=1.25.0
- google-ads==21.0.0 要求 google-auth>=2.15.0,<3.0.0
选择google-auth==2.15.0(该版本包含CredentialsWithTokenUri,且兼容所有上述包),修改后的PIP_PACKAGES如下:
"PIP_PACKAGES": "google-auth==2.15.0 google-cloud-bigquery==3.10.0 google-resumable-media[requests]==2.5.0 google-cloud-storage==2.8.0 google-cloud-secret-manager==2.16.1 google-ads==21.0.0"
方法2:用初始化动作隔离google-ads依赖
若方法1无效,可通过初始化动作在独立Python环境中安装google-ads,避免干扰集群全局依赖:
- 创建初始化脚本
install-google-ads.sh:
#!/bin/bash sudo apt-get update && sudo apt-get install -y python3-venv python3 -m venv /opt/google-ads-env source /opt/google-ads-env/bin/activate pip install google-ads==21.0.0 deactivate
- 创建集群时指定该初始化动作:
gcloud dataproc clusters create CLUSTER_NAME \ --region REGION \ --initialization-actions gs://YOUR_BUCKET_PATH/install-google-ads.sh \ --pip-packages "google-cloud-bigquery==3.10.0 google-resumable-media[requests]==2.5.0 google-cloud-storage==2.8.0 google-cloud-secret-manager==2.16.1"
运行相关作业时,激活该虚拟环境执行代码即可。
方法3:升级Data Proc基础镜像版本
如果使用的是旧版Data Proc镜像,预装依赖版本可能偏老,尝试升级至最新稳定版镜像(如2.1及以上),基础环境依赖更完善,能降低冲突概率。
内容的提问来源于stack exchange,提问作者Dhomse N
相关产品推荐
相关产品推荐

