Передача дополнительных банок в Spark через spark-submit

Я использую Spark с MongoDB, и поэтому полагаюсь на mongo-hadoop водители. У меня все работает благодаря вкладу в мой оригинальный вопрос здесь.

Моя работа Spark выполняется, однако я получаю предупреждения, которые не понимаю. Когда я запускаю эту команду

$SPARK_HOME/bin/spark-submit --driver-class-path /usr/local/share/mongo-hadoop/build/libs/mongo-hadoop-1.5.0-SNAPSHOT.jar:/usr/local/share/mongo-hadoop/spark/build/libs/mongo-hadoop-spark-1.5.0-SNAPSHOT.jar --jars /usr/local/share/mongo-hadoop/build/libs/mongo-hadoop-1.5.0-SNAPSHOT.jar:/usr/local/share/mongo-hadoop/spark/build/libs/mongo-hadoop-spark-1.5.0-SNAPSHOT.jar my_application.py

это работает, но выдает мне следующее предупреждающее сообщение

Предупреждение: локальный jar /usr/local/share/mongo-hadoop/build/libs/mongo-hadoop-1.5.0-SNAPSHOT.jar:/usr/local/share/mongo-hadoop/spark/build/libs/mongo-hadoop-spark-1.5.0-SNAPSHOT.jar не существует, пропуская.

Когда я пытался заставить это работать, если бы я пропустил эти пути при отправке задания, оно не запустилось бы вообще. Теперь, однако, если я пропущу эти пути, он работает

$SPARK_HOME/bin/spark-submit  my_application.py

Может кто-нибудь объяснить, что здесь происходит? Я просмотрел похожие вопросы, ссылаясь на то же предупреждение, и просмотрел документацию.

Устанавливая параметры один раз, они сохраняются как переменные окружения или как? Я рад, что это работает, но опасаюсь, что я не до конца понимаю, почему иногда, а не другие.

2 ответа

Решение

Проблема в том, что CLASSPATH должны быть отделены двоеточием, в то время как JARS должен быть разделен запятой:

$SPARK_HOME/bin/spark-submit \
--driver-class-path /usr/local/share/mongo-hadoop/build/libs/mongo-hadoop-1.5.0-SNAPSHOT.jar:/usr/local/share/mongo-hadoop/spark/build/libs/mongo-hadoop-spark-1.5.0-SNAPSHOT.jar \
--jars /usr/local/share/mongo-hadoop/build/libs/mongo-hadoop-1.5.0-SNAPSHOT.jar,/usr/local/share/mongo-hadoop/spark/build/libs/mongo-hadoop-spark-1.5.0-SNAPSHOT.jar my_application.py

Добавление поверх Zero323 ответа

Я думаю, что лучший способ сделать это

$SPARK_HOME/bin/spark-submit \
--driver-class-path  $(echo /usr/local/share/mongo-hadoop/build/libs/*.jar | tr ' ' ',') \
--jars $(echo /usr/local/share/mongo-hadoop/build/libs/*.jar | tr ' ' ',') my_application.py

при таком подходе вы не пропустите ни одной банки по ошибке в пути к классам, поэтому предупреждение не должно появиться.

Другие вопросы по тегам