使用 sbt run 或使用 spark-submit 脚本运行 spark 应用程序的区别

YAC*_*ACI 1 scala sbt apache-spark spark-submit

我是 Spark 的新手,在学习这个框架时,我发现,据我所知,用 Scala 编写的 Spark 应用程序有两种运行方式:

  1. 将项目打包成 JAR 文件,然后使用 spark-submit 脚本运行它。
  2. 使用 sbt run 直接运行项目。

我想知道这两种执行模式之间的区别可能是什么,尤其是当使用 sbt run 运行时,当它与 spark-submit 完美运行时,可能会抛出 java.lang.InterruptedException。

谢谢!

the*_*tom 5

SBT是一个构建工具(我喜欢在 Linux 上运行),并不一定意味着使用 SPARK。碰巧它像 IntelliJ 一样用于 Spark 应用程序。

您可以在 SBT 控制台下的单个 JVM 中打包运行应用程序,但不能大规模运行。因此,如果您创建了一个带有指定依赖项的 Spark 应用程序,SBT 将使用编译代码并创建一个包含所需依赖项等的 jar 文件以本地运行

您还可以在 SBT 中使用assembly选项,它创建一个uber jarfat jar,其中包含在 jar 中包含的所有依赖项,您将这些依赖项上传到集群并通过调用spark-submit运行。因此,同样,如果您创建了一个带有指定依赖项的 Spark 应用程序,SBT 将通过汇编、编译代码并创建一个包含所有必需依赖项等的 uber jar 文件,除了您需要发送给 Workers 的外部文件,以在您的集群上运行(一般而言)。