Почему драйвер pyspark не загружает файлы jar в локальное хранилище? - PullRequest
0 голосов
/ 05 ноября 2019

Я использую spark-on-k8s-operator для развертывания Spark 2.4.4 в Kubernetes. Однако я почти уверен, что этот вопрос касается самой Spark, а не ее развертывания в Kubernetes.

Я включаю несколько файлов при развертывании задания в кластере kubernetes, включая jar, pyfiles и main. В спарк-о-к8с;это делается через файл конфигурации:

spec:
  mainApplicationFile: "s3a://project-folder/jobs/test/db_read_k8.py"
  deps:
    jars:
      - "s3a://project-folder/jars/mysql-connector-java-8.0.17.jar"
    pyFiles:
      - "s3a://project-folder/pyfiles/pyspark_jdbc.zip"

Это будет эквивалентно

spark-submit \
   --jars s3a://project-folder/jars/mysql-connector-java-8.0.17.jar \ 
   --py-files s3a://project-folder/pyfiles/pyspark_jdbc.zip \
   s3a://project-folder/jobs/test/db_read_k8.py

В spark-on-k8s есть модуль sparkapplication kubernetes, который управляет отправленнымискровые задания, и этот модуль запускается в модуле драйвера (который затем взаимодействует с рабочими модулями). Моя проблема возникает на панели драйверов. После того, как драйвер получит команду spark-submit, он продолжит свою работу и, как и ожидалось, получит необходимые файлы из AWS S3. За исключением того, что он не извлекает файл jar:

spark-kubernetes-driver 19/11/05 17:01:19 INFO SparkContext: Added JAR s3a://project-folder/jars/mysql-connector-java-8.0.17.jar at s3a://sezzle-spark/jars/mysql-connector-java-8.0.17.jar with timestamp 1572973279830
spark-kubernetes-driver 19/11/05 17:01:19 INFO SparkContext: Added file s3a://project-folder/jobs/test/db_read_k8.py at s3a://sezzle-spark/jobs/test/db_read_k8.py with timestamp 1572973279872
spark-kubernetes-driver 19/11/05 17:01:19 INFO Utils: Fetching s3a://project-folder/jobs/test/db_read_k8.py to /var/data/spark-f54f76a6-8f2b-4bd5-9644-c406aecac2dd/spark-42e3cd23-55c5-4099-a6af-455efb5dc4f2/userFiles-ae47c908-d0f0-4ff5-aee6-4dadc5c9b95f/fetchFileTemp1013256051456720708.tmp
spark-kubernetes-driver 19/11/05 17:01:19 INFO SparkContext: Added file s3a://project-folder/pyfiles/pyspark_jdbc.zip at s3a://sezzle-spark/pyfiles/pyspark_jdbc.zip with timestamp 1572973279962
spark-kubernetes-driver 19/11/05 17:01:20 INFO Utils: Fetching s3a://project-folder/pyfiles/pyspark_jdbc.zip to /var/data/spark-f54f76a6-8f2b-4bd5-9644-c406aecac2dd/spark-42e3cd23-55c5-4099-a6af-455efb5dc4f2/userFiles-ae47c908-d0f0-4ff5-aee6-4dadc5c9b95f/fetchFileTemp6740168219531159007.tmp

Все три обязательных файла «добавлены», но только «основной» и «pyfiles» «извлечены». Просматривая модуль драйвера, я нигде не могу найти файл jar;он просто не загружается локально. Это, конечно, приводит к сбою моего приложения, потому что драйвер mysql не находится в classpath.

Почему не запускается загрузка jar-файлов в локальную файловую систему драйвера, как это происходит для pyfiles и python main?

1 Ответ

1 голос
/ 06 ноября 2019

PySpark имеет немного неясное и недостаточно документированное управление зависимостями.

Если ваша проблема связана с добавлением только .jar, я бы порекомендовал использовать вместо него --packages ... (у spark-operator должна быть аналогичная опция).

Надеюсь, это сработает для вас.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...