我是Spark的新手,在学习此框架时,我发现,据我所知,使用Scala编写时,有两种方法可以运行Spark应用程序:
我想知道这两种执行方式之间的区别是什么,尤其是当使用sbt运行时,如果在使用spark-submit完美运行时会抛出java.lang.InterruptedException。
谢谢!
答案 0 :(得分:1)
Spark Sbt和Spark-submit是2个完全不同的事物
希望这会有所帮助。
干杯!
答案 1 :(得分:1)
SBT 是一个构建工具(我喜欢在Linux上运行),不一定暗示使用SPARK。碰巧的是,它像IntelliJ一样用于Spark应用程序。
您可以在SBT控制台下的单个JVM中打包和运行,但不能大规模进行。因此,如果您创建了带有指示依赖关系的Spark应用程序,SBT将使用 package 编译代码,并创建具有所需依赖关系的jar文件等,以便在本地运行。
您还可以在SBT中使用 assembly 选项,该选项会创建一个超级罐子或胖罐子,并将所有依赖项包含在要上传到的罐子中您的集群并通过调用火花提交来运行。因此,再次,如果您创建了一个带有指示依赖项的Spark应用程序,SBT将通过汇编,编译代码并创建一个具有所有必需依赖项等的uber jar文件,除了需要运送到Workers的外部文件之外,在群集上运行(通常)。