ENV: spark 2.4.3
ОБНОВЛЕННЫЙ ответ:
В https://spark.apache.org/docs/latest/running-on-kubernetes.html#dependency-management, документы говорит:
Обратите внимание, что при использовании зависимостей приложений отЛокальная файловая система клиента отправки в настоящее время еще не поддерживается.
СТАРЫЙ ответ:
Я столкнулся с той же проблемой.Я не думаю, что файлы в --py-файлах будут разосланы водителю и исполнителям.Я отправляю файл Python в кластер K8s с помощью следующей команды:
bin/spark-submit \
--master k8s://https://1.1.1.1:6443 \
--deploy-mode cluster \
--name spark-test \
--conf xxx.com/spark-py:v2.4.3 \
--py-files /xxx/spark-2.4.3-bin-hadoop2.7/spark_test1.py \
http://example.com/spark/__main__.py
Я получил журналы в модуле драйвера:
+ PYTHONPATH='/opt/spark/python/lib/pyspark.zip:/opt/spark/python/lib/py4j-*.zip:file:///xxx/spark-2.4.3-bin-hadoop2.7/spark_test1.py'
Я получил ошибки, подобные следующим:
Traceback (most recent call last):
File "/tmp/spark-5e76171d-c5a7-49c6-acd2-f48fdaeeb62a/__main__.py", line 1, in <module>
from spark_test1 import main
ImportError: No module named spark_test1
Из-за ошибок основной файл python загружается и распространяется на драйвер.Для --py-files PYTHONPATH содержит точно такой же путь в моем cmd, что я не думаю, что эти файлы загружаются по этому пути в модуле драйвера и модуле исполнителя.
Я пытался заменить spark_test1.py
от локального пути к URL-адресу HTTP.PYTHONPATH изменился неприлично, но ошибка та же.