#scala #sbt #sbt-assembly
#scala #sbt #sbt-сборка
Вопрос:
Я использую SBT как инструмент сборки для проектов spark. Я могу создать полный jar-файл своих зависимостей с помощью sbt-assembly
плагина.
Однако в результате получается ~ 120-миллиметровый jar-файл, в основном состоящий из зависимостей, которые мне нужно постоянно загружать в S3 для запуска моего кода — на это уходит 3-5 минут. Не так много времени, но довольно раздражает.
Что значительно улучшило бы ситуацию, так это то, что SBT создал бы jar-файл зависимостей (который редко меняется) и небольшой jar-файл моего кода приложения, который я смогу загрузить через несколько секунд.
Возможно ли это? Я довольно новичок в SBT.
Ответ №1:
sbt-assembly
поддерживает готовое разделение jar-файла проектного приложения изjar-файла зависимостей. Для создания только jar зависимостей выполните
sbt assemblyPackageDependency
Чтобы создать jar только с кодом вашего проектного приложения, определите assemblyOption
следующим образом
assemblyOption in assembly := (assemblyOption in assembly).value.copy(includeScala = false, includeDependency = false)
и выполнить sbt assembly
как обычно.
Комментарии:
1. Спасибо, я смог создать оба jar, загрузить в S3 и запустить с помощью
spark-submit --jars s3://<bucket path>/<project>-deps.jar s3://<bucket path>/<project>.jar