ModuleNotFoundError при запуске PySpark в Dataproc - PullRequest
1 голос
/ 03 июля 2019

Запуск задания pyspark на GCP (с использованием 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 install не распознает пакеты python с дефисами (например,'PIP_PACKAGES=google-cloud-storage').Какой шаблон побега я должен использовать, чтобы заставить это работать?

1 Ответ

1 голос
/ 04 июля 2019

нет необходимости использовать API хранилища для чтения из GCS.Вместо этого используйте соединитель GCS, предоставленный Dataproc [1] (он уже находится в пути к классам, поэтому никаких дальнейших действий не требуется).

Он реализован в виде файловой системы hadoop, поэтому любой API-интерфейс чтения и записи с искрой сможетпринять URI вида gs://my-bucket/....Например:

sc.textFile("gs://my-bucket/example.txt")

Также должно работать сглаживание.

[1] https://cloud.google.com/dataproc/docs/concepts/connectors/cloud-storage

...