Передача дополнительных банок в 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
при таком подходе вы не пропустите ни одной банки по ошибке в пути к классам, поэтому предупреждение не должно появиться.