Spark submit добавить несколько банок в classpath
Я пытаюсь запустить искровую программу, где у меня есть несколько файлов jar, если у меня есть только одна банка, которую я не могу запустить. Я хочу добавить оба файла jar, которые находятся в одном месте. Я попробовал ниже, но он показывает ошибку зависимости
spark-submit \
--class "max" maxjar.jar Book1.csv test \
--driver-class-path /usr/lib/spark/assembly/lib/hive-common-0.13.1-cdh5.3.0.jar
Как я могу добавить еще один файл jar, который находится в том же каталоге?
Я хочу добавить /usr/lib/spark/assembly/lib/hive-serde.jar
.
Ответы
Ответ 1
Я пытался подключиться к mysql из кода python, который был выполнен с помощью spark-submit
.
Я использовал песочницу HDP, которая использовала Ambari. Пробовал множество опций, таких как --jars
, --driver-class-path
и т.д., Но никто не работал.
Решение
Скопируйте банку в /usr/local/miniconda/lib/python2.7/site-packages/pyspark/jars/
На данный момент я не уверен, что это решение или быстрый взлом, но так как я работаю над POC, поэтому для меня это работает.
Ответ 2
Просто используйте параметр --jars
. Spark будет делиться этими банками (разделенными запятыми) с исполнителями.
Ответ 3
Задает полный путь для всех дополнительных банок.
./bin/spark-submit --class "SparkTest" --master local[*] --jars /fullpath/first.jar,/fullpath/second.jar /fullpath/your-program.jar
Или добавьте банки в conf/spark-defaults.conf, добавив такие строки, как:
spark.driver.extraClassPath /fullpath/firs.jar:/fullpath/second.jar
spark.executor.extraClassPath /fullpath/firs.jar:/fullpath/second.jar
Ответ 4
Вы можете использовать * для импорта всех баннеров в папку при добавлении в conf/spark-defaults.conf.
spark.driver.extraClassPath /fullpath/*
spark.executor.extraClassPath /fullpath/*
Ответ 5
В Spark 2.3 вам нужно просто установить параметр --jars. Путь к файлу должен быть добавлен к схеме, хотя, например, file:///<absolute path to the jars>
Например: file:////home/hadoop/spark/externaljsrs/*
или file:////home/hadoop/spark/externaljars/abc.jar,file:////home/hadoop/spark/externaljars/def.jar
Ответ 6
Для опции --driver-class-path
вы можете использовать :
в качестве разделителя для пропускания нескольких банок.
Ниже приведен пример с командой spark-shell
, но я думаю, что то же самое должно работать и с spark-submit
spark-shell --driver-class-path /path/to/example.jar:/path/to/another.jar
Spark версия: 2.2.0
Ответ 7
Вы можете использовать --jars $ (echo/Path/To/Your/Jars/*.jar | tr '' ','), чтобы включить всю папку Jars.
Так,
spark-submit - класс com.yourClass \ --jars $ (echo/Path/To/Your/Jars/*.jar | tr '' ',') \ ...
Ответ 8
Для меня опция --jars всегда работает, но она слишком многословна. Чтобы сохранить некоторую типизацию, вы можете поместить все банки в каталог, скажем "myJars", а затем использовать эту команду для отправки:
spark-submit --master local[*] --jars "/path/to/myJars/*.jar" --class <ClassName> <application_jar_name>.jar arg1 arg2