2016-06-03 1 views
0

Я пытаюсь отправить приложение в свой искровой кластер (автономный режим) с помощью команды spark-submit. Я следую за official spark documentation, а также полагаюсь на this other one. Теперь проблема в том, что я получаю странное поведение. Моя установка заключается в следующем:spark-submit в режиме разговора клиент не читает все банки

  • У меня есть каталог, где все банки зависимостей для моего приложения расположены, то есть /home/myuser/jars
  • Сосуд моего приложения находится в том же каталоге (/home/myuser/jars), и называется dat-test.jar
  • класс точки входа в dat-test.jar находится на пути пакета my.package.path.Test
  • мастер искры в spark://master:7077

Теперь я подать заявку непосредственно на главном узле, таким образом, используя режим client развернуть, выполнив команду

./spark-submit --class my.package.path.Test --master spark://master:7077 --executor-memory 5G --total-executor-cores 10 /home/myuser/jars/*

, и я получил сообщение об ошибке, как

java.lang.ClassNotFoundException: my.package.path.Test

Если я активируйте режим verbose, я вижу, что primaryResource, выбранный в качестве флага, содержащего точку входа, является первой банкой по алфавиту в /home/myuser/jars/ (то есть не dat-test.jar), что приводит (я полагаю) к ClassNotFoundException. Все банки в том же каталоге в любом случае загружаются в качестве аргументов.

Конечно, если я бегу

./spark-submit --class my.package.path.Test --master spark://master:7077 --executor-memory 5G --total-executor-cores 10 /home/myuser/jars/dat-test.jar

он находит Test класс, но он не находит другие классы, содержащиеся в других банках. И, наконец, если я использую --jars флаг и запустить

./spark-submit --class my.package.path.Test --master spark://master:7077 --executor-memory 5G --total-executor-cores 10 --jars /home/myuser/jars/* /home/myuser/jars/dat-test.jar

я получить тот же результат, что и первый вариант. Первая баночка в /home/myuser/jars/ загружается как primaryResource, что приводит к ClassNotFoundException для my.package.path.Test. То же самое, если я добавлю --jars /home/myuser/jars/*.jar.

Важные моменты:

  • Я не хочу иметь одну баночку со всеми зависимостями по причинам развития
  • Банки в /home/myuser/jars/ много. Я хотел бы знать, есть ли способ включить их все вместо использования синтаксиса, разделенного запятыми
  • Если я пытаюсь запустить те же команды с --deploy-cluster на главном узле, я не получаю ошибку, но вычисление по другим причинам (но это еще одна проблема).

Каков правильный способ запуска искрообразования в режиме клиента? Спасибо

ответ

0

Невозможно включить все банки с помощью опции -jars, вам нужно будет создать небольшой скрипт для их перечисления. Эта часть немного не оптимальна.

+0

Можете ли вы начать его с небольшого примера? – clearlight

Смежные вопросы