Когда использовать «сборку sbt» и «компиляцию sbt && sbt package»? - PullRequest
0 голосов
/ 12 декабря 2018

Я хотел бы знать, когда мне следует использовать sbt assembly, а когда sbt compile && sbt package?

Я пишу программу на своем локальном компьютере, используя Intellij IDEA, и компилирую ее с помощью sbt compile && sbt packageЗатем я собираюсь загрузить его в кластер и запустить, используя spark-submit.Это лучший способ?Когда я должен использовать sbt assembly?

Ответы [ 2 ]

0 голосов
/ 26 декабря 2018

Я хотел бы знать, когда мне следует использовать sbt assembly, а когда sbt compile && sbt package?

Цитировать sbt-assembly веб-сайт (который дает sbt assembly):

Цель проста: создать полный JAR-файл вашего проекта со всеми его зависимостями.

Любая зависимость в build.sbt (которая не являетсяпомеченный как Provided) будет частью окончательного файла JAR, который называется Uber-JAR.

Существует по крайней мере две причины, по которым вы хотите использовать плагин:

  1. Соберите все зависимости в один JAR-файл, который намного проще развернуть в рабочей среде (аналогично образу Docker)
  2. Запустите приложение с одной версией Spark, скажем, 2.0.0, скластер, имеющий spark-submit из Spark 1.6.0

Вы используете sbt compile && sbt package для компиляции и упаковки классов вашего приложения (которое, кстати, вообще не должно использовать Spark).Этот jar-файл не включает зависимости вашего приложения, поэтому любые зависимости должны быть предоставлены другим способом (и делает развертывание немного сложным).

NB: sbt compile && sbt package - это просто более длинный вариант sbt compile package который, учитывая, что compile задача является зависимостью package, это просто sbt package.

0 голосов
/ 13 декабря 2018

«сборка sbt» хорошо использовать, когда вы хотите иметь Uber JAR со всеми зависимостями.Вам понадобится плагин сборки, чтобы использовать «сборку sbt».

Как правило, этот тип jar хорош для сборки, когда вы не хотите предоставлять зависимые jar-файлы отдельно на целевой машине.Благодаря этому виду упаковки вы можете избежать проблем, связанных с несоответствием версий jar сторонних производителей.

...