Я столкнулся с интересным вопросом о том, что существуют разные способы подачи приложения spark из среды разработки windows. Как правило, мы отправляем задание spark, используя spark-submit
, а также можем выполнить uber jar (зависимые библиотеки spark, собранные с помощью jar), используя команду java -jar
- , используя java -jar:
java -jar -Xmx1024m /home/myuser/myhar.jar
- Команда с использованием s park-submit:
spark-submit --master local[*] /home/myuser/myhar.jar
Поскольку я могу выполнить задание с использованием обоих методов, я заметил, что иногда java -jar
метод быстрее, а иногда spark-submit
быстрее для того же набора данных (скажем, 20000 строк с большим количеством данных для перетасовки данных внутри). spark-submit
имеет лучшую опцию для управления исполнителями и памятью и т. д. c с помощью командной строки Аргумент, однако java -jar
, метод, который нам нужно жестко кодировать внутри самого кода. Если мы запустим флягу с большим набором данных, java -jar
выбрасывает исключение из памяти, в то время как spark-submit
хотя и занимает время, но выполняется без ошибок с конфигурациями по умолчанию.
Я не смог бы понять разницу, отправив приложение, использующее spark-submit
и java-jar
, следовательно, мои вопросы:
Как происходит выполнение, когда мы подаем заявку, используя java-jar
. Выполняется ли он внутри самой памяти jvm
и не использует никаких искровых свойств?