使用spark-submit 执行spark/Scala jar 与使用java -jar 执行spark jar

San*_*ngh 5 java performance scala apache-spark spark-submit

我遇到一个有趣的问题,即从 Windows 开发环境提交 Spark 应用程序的不同方法。一般来说,我们可以使用提交spark作业spark-submit,也可以使用以下命令执行uber jar(用jar组装的依赖spark库)java -jar

  • 使用java -jar 命令: java -jar -Xmx1024m /home/myuser/myhar.jar
  • 使用 s Park-submit 命令: spark-submit --master local[*] /home/myuser/myhar.jar

因为我可以使用这两种方法执行作业,所以我观察到有时java -jar方法更快,有时spark-submit对于相同的数据集更快(例如 20000 行,其中有大量数据混洗登录)。spark-submit有更好的选择来使用命令行参数控制执行器和内存等,但是java -jar,我们需要在代码本身内部进行硬编码。如果我们运行具有大数据集的 jar,java -jar则会抛出内存不足异常,虽然spark-submit需要时间,但使用默认配置执行时不会出现错误。

我无法理解使用提交申请的区别spark-submitjava-jar因此我的问题是:

当我们使用 提交申请时,执行是如何发生的java-jar。它是否在内存本身内部执行jvm并且不使用任何 Spark 属性?