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

Difference in running a spark application with sbt run or with spark-submit script

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

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

我想知道这两种执行模式之间的区别是什么,特别是当 运行 sbt 运行 可以在 运行 完美地抛出 java.lang.InterruptedException 时使用 spark-submit.

谢谢!

Spark Sbt 和 Spark-submit 是两个完全不同的事物

  1. Spark sbt 是构建工具。如果您创建了一个 spark 应用程序,sbt 将帮助您编译该代码并创建一个具有所需依赖项的 jar 文件等。
  2. Spark-submit 用于将 spark 作业 提交到集群管理器。您可能正在使用独立、Mesos 或 Yarn 作为您的集群管理器。 spark-submit 会将您的作业提交给集群管理器,您的作业将在集群上启动。

希望对您有所帮助。

干杯!

SBT 是一个构建工具(我喜欢 运行ning on Linux),它不一定暗示 Spark 的使用。碰巧它像 IntelliJ 一样用于 Spark 应用程序。

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

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