0

我正在使用 Databricks 集群来执行 spark 应用程序。
我的应用程序对几个库有一些依赖,但现在这些库不能通过 Databricks 安装新库选项使用。
我知道通过 Fat jar 或 Uber jar 我可以添加多个库并将其传递给集群。
我还知道要创建一个胖 jar,你必须提供一个主类,所以我在本地系统中编写了一个简单的程序,并将依赖项添加到 build.sbt 文件中。
我正在使用“sbt assembly”命令来创建 fat jar。
请注意,我没有在示例程序中使用该库。

我的目标是创建一个胖 jar,它继承其中所有必需的 jar,以便我的其他基于 Spark 的应用程序可以通过这个胖 jar 访问这些库。

我做了以下步骤。

'示例程序'

  def main(args: Array[String]): Unit = {
    print("Hello World")
  }

}

'构建.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
}

'汇编.sbt'

addSbtPlugin("com.eed3si9n" % "sbt-assembly" % "0.14.6")

但我不确定我所做的一切是否正确,是否有助于在 Databricks 集群中执行我的 spark 程序。

Q1)一个库可能依赖于另一个库,所以如果我在 SBT 中提到了库名称,那么它会加载其他依赖库吗?
Q2)如果我不使用现有程序的库,它是否可用于集群的其他程序。
Q3)在集群中安装 Fat jar 后-我如何访问库..我的意思是我将通过哪个名称访问库..导入命令...

抱歉,如果我的问题如此愚蠢。谢谢

4

0 回答 0