在Dataproc中运行PySpark时发生ModuleNotFoundError

在Dataproc中运行PySpark时发生ModuleNotFoundError,pyspark,google-cloud-storage,google-cloud-dataproc,Pyspark,Google Cloud Storage,Google Cloud Dataproc,在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 impor

在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导入存储
文件“/opt/conda/default/lib/python3.6/site-packages/google/cloud/storage/_-init__.py”,第38行,在
从google.cloud.storage.blob导入blob
文件“/opt/conda/default/lib/python3.6/site packages/google/cloud/storage/blob.py”,第54行,在
从google.cloud.iam导入策略
ModuleNotFoundError:没有名为“google.cloud.iam”的模块
认为所有google.cloud依赖项都将默认加载到环境中;在创建集群时,我还尝试添加'PIP_PACKAGES=googlecloudiam==0.1.0',但没有成功


编辑:更一般的问题-pip安装无法识别带有连字符的python包(例如,
'pip\u packages=google cloud storage'
)。我应该使用什么转义模式来实现这一点?

从地面军事系统读取数据时不需要使用存储API。而是使用Dataproc[1]提供的GCS连接器(其已在类路径上,因此无需进一步操作)

它是作为hadoop文件系统实现的,因此任何spark读写API都能够接受格式为
gs://my bucket/…
的URI。例如:

sc.textFile("gs://my-bucket/example.txt")
全球化也应该起作用

[1]