Я пытаюсь выполнить скрипт 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
. Для иллюстрации: