在GCP上运行pyspark作业(使用dataproc 1.4),我正在尝试从GCP存储读取数据。出现以下错误:
from google.cloud import storage
File "/opt/conda/default/lib/python3.6/site-packages/google/cloud/storage/__init__.py", line 38, in <module>
from google.cloud.storage.blob import Blob
File "/opt/conda/default/lib/python3.6/site-packages/google/cloud/storage/blob.py", line 54, in <module>
from google.cloud.iam import Policy
ModuleNotFoundError: No module named 'google.cloud.iam'
默认情况下,所有google.cloud依赖项都将在环境中加载;创建群集时,我也尝试添加“ PIP_PACKAGES = google-cloud-iam == 0.1.0”,但没有好运。
编辑:更笼统的问题-pip安装无法识别带有连字符的python软件包(例如'PIP_PACKAGES=google-cloud-storage'
)。我应该使用哪种退出模式才能使它正常工作?
答案 0 :(得分:1)
使用存储API来从GCS读取不需要。而是使用Dataproc [1]提供的GCS连接器(该连接器已经在类路径上,因此无需采取进一步措施)。
它被实现为hadoop文件系统,因此任何spark读写API都可以接受gs://my-bucket/...
形式的URI。例如:
sc.textFile("gs://my-bucket/example.txt")
地球也应该起作用。
[1] https://cloud.google.com/dataproc/docs/concepts/connectors/cloud-storage