我是 Spark 的新手,在学习这个框架时,我发现据我所知,有两种方法可以运行用 Scala 编写的 spark 应用程序:
- 将项目打包成JAR文件,然后使用spark-submit脚本运行。
- 直接使用 sbt run 运行项目。
我想知道这两种执行模式之间的区别是什么,特别是当使用 sbt run 运行时可以抛出 java.lang.InterruptedException 而它与 spark-submit 完美运行时。
谢谢!
最佳答案
SBT 是一个构建工具(我喜欢在 Linux 上运行),不一定暗示使用 Spark。碰巧它像 IntelliJ 一样用于 Spark 应用程序。
您可以在 SBT 控制台下的单个 JVM 中打包和运行应用程序,但不能大规模运行。因此,如果您创建了一个带有指定依赖项的 Spark 应用程序,SBT 将使用package 编译代码并创建一个具有所需依赖项等的 jar 文件以在本地运行。
您还可以在 SBT 中使用 assembly 选项创建一个 uber jar 或 fat jar,其中包含您上传到的 jar 中的所有依赖项您的集群并通过调用 spark-submit 运行。因此,同样,如果您创建了一个带有指定依赖项的 Spark 应用程序,SBT 将通过组装、编译代码并创建一个包含所有必需依赖项等的 uber jar 文件,除了您需要发送给 Workers 的外部文件,以在您的集群上运行(通常)。
关于scala - 使用 sbt run 或使用 spark-submit 脚本运行 spark 应用程序的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53902625/