在Dataproc中运行PySpark时发生ModuleNotFoundError

时间:2019-07-03 02:45:38

标签: 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 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')。我应该使用哪种退出模式才能使它正常工作?

1 个答案:

答案 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