Я пытаюсь отправить приложение в свой искровой кластер (автономный режим) с помощью команды 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
на главном узле, я не получаю ошибку, но вычисление по другим причинам (но это еще одна проблема).
Каков правильный способ запуска искрообразования в режиме клиента? Спасибо
Можете ли вы начать его с небольшого примера? – clearlight