在maven
或sbt
中构建spark应用程序的常见模式是将火花二进制文件标记为provided
。这种方法大大减少了超级jar的大小,并且如果二进制文件是为spark 2.0.0构建的,但是部署在2.0.1上,也可以避免版本不匹配。
这种方法的缺点是 - 我们如何在local
模式下运行程序?在这种情况下,没有火花服务器为我们提供二进制文件。
这不是指运行 tests :那些位于test
目录中的。相反,其意图是在部署集群上运行与本地相同的工作流程,包括从main
目录中获取并使用相同的构建文件。首选答案是只有sbt
或maven
命令行开关才会有所不同。
例如在sbt
中(请注意 提供 ,这将省略二进制文件):
"org.apache.spark" %% "spark-core" % Versions.spark % "provided"
我们希望*包含spark二进制文件:
sbt package <some switch to include the spark binaries>
在maven pom.xml
<dependency>
..
<scope>provided</scope>
</dependency>
我们想以某种方式包含火花二进制文件:
mvn package <some switch to include the spark binaries>