Я использую кластер Databricks для запуска приложения spark.
Мое приложение зависело от нескольких библиотек, но теперь эти библиотеки недоступны через опцию установки новой библиотеки Databricks.
Я узнал об этом через Fat jar или Uber jar Я могу добавить несколько библиотек и передать их в кластер.
Я также узнал, что для создания fat jar необходимо предоставить основной класс, поэтому я написал простую программу в своей локальной системе и добавили зависимости в файл build.sbt.
Я использую команду 'sbt assembly' для создания толстого фляги.
Обратите внимание, что я не использую библиотеку в моем примере программы.
Моя цель - создать толстую банку, которая наследует все необходимые в ней банки, чтобы мое другое приложение на основе Spark могло получить доступ к библиотекам через эту толстую банку.
Я сделал следующие шаги .
'Пример программы'
def main(args: Array[String]): Unit = {
print("Hello World")
}
}
'Build.sbt'
name := "CrealyticsFatJar"
version := "0.1"
scalaVersion := "2.11.12"
// https://mvnrepository.com/artifact/com.crealytics/spark-excel
libraryDependencies += "com.crealytics" %% "spark-excel" % "0.12.0"
assemblyMergeStrategy in assembly := {
case PathList("META-INF", xs @ _*) => MergeStrategy.discard
case x => MergeStrategy.first
}
'assembly.sbt'
addSbtPlugin("com.eed3si9n" % "sbt-assembly" % "0.14.6")
Но я Я не уверен, что все, что я делаю, правильно и поможет выполнить мои искровые программы в кластере Databricks.
Q1) Возможно, существует вероятность того, что одна библиотека будет зависеть от другой библиотеки, поэтому, если я упомяну имя библиотеки в SBT, загрузит ли она другие зависимые библиотеки?
Q2) Если я не использую библиотеки для существующей программы, она будет доступна для другой программы кластера.
Q3) После установки Fat jar в cluster- как я могу получить доступ к библиотекам ... Я имею в виду, под каким именем я буду обращаться к библиотекам .. команда импорта ...
Извиняюсь, если мои вопросы настолько глупы. Спасибо