Я использую 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?