Использование Python Google Firestore client с PySpark - PullRequest
0 голосов
/ 08 ноября 2019

Я пытаюсь выполнить скрипт Python, используя PySpark. Тем не менее, одна библиотека, которая имеет решающее значение для работы, - это клиент API Firestore Google Cloud google-cloud-firestore. У меня есть данные в базе данных Firestore, к которым мне нужно получить доступ для запуска кода.

Проблема заключается в том, что они основаны на реализации GRPC на C и поэтому не могут быть заархивированы и переданы в spark-submitзапрос вместе с остальными библиотеками Python, на которые я полагаюсь.

Я читал о том, как вставить библиотеку в образ Spark или запустить ее при запуске узла, но изо всех сил пытался найти способ сделать это в рамках PySpark.

Если я выполню следующую строку (libs.zip имеет все зависимости, включая Firestore, jobs.zip имеет весь код Python для запуска заданий, которые работают нормально, если он не зависит от доступа к Firestore):

spark-submit --py-files jobs.zip,libs.zip main.py --job myjob

Я получаю следующую ошибку:

ImportError: cannot import name 'cygrpc' from 'grpc._cython'

Итак, мой вопрос, как я могу включить библиотеку google-cloud-firestore в инфраструктуру PySpark, чтобы я мог получить доступ кданные из Firestore?

EDIT: libs.zip содержит все загруженные библиотеки Python, перечисленные в requirements.txt, включая google-cloud-firestore, grpc и grpcio. Для иллюстрации:

libs screenshot

...