Я предполагаю, что вы используете sbt в качестве инструмента сборки в вашем проекте.Сам проект может использовать Java или Scala.Я также думаю, что ответ в целом был бы аналогичным, если бы вы использовали gradle или maven, но плагины были бы просто другими.Идея та же.
Вы должны использовать плагин сборки (например, sbt-assembly ), который собирается связать все не-1008 * зависимости, включая ApacheSpark, для создания так называемой толстой банки или uber-jar .
Если пользовательская версия Apache Spark является частью jar приложения, эта версиябудет использоваться все, что вы используете spark-submit
для развертывания.Хитрость заключается в том, чтобы обмануть загрузчик классов, чтобы он загружал файлы jar и классы по вашему выбору, а не spark-submit
(и, следовательно, все, что используется в кластере).