Apache spark 为什么spark submit会以“提交失败”;IllegalArgumentException:缺少应用程序资源。";?

Apache spark 为什么spark submit会以“提交失败”;IllegalArgumentException:缺少应用程序资源。";?,apache-spark,Apache Spark,当我创建Spark应用程序的jar并尝试使用Spark submit运行它时,我得到以下错误 这是我用来运行的命令 spark-submit --executor-memory 1g --jars s3://test-data-lab-users/spachari/test/test_2.10-1.0.jar 这就是我得到的错误。这是否意味着我没有在spark提交中传递正确的参数 Exception in thread "main" java.lang.IllegalArgumentExcep

当我创建Spark应用程序的jar并尝试使用
Spark submit
运行它时,我得到以下错误

这是我用来运行的命令

spark-submit --executor-memory 1g --jars s3://test-data-lab-users/spachari/test/test_2.10-1.0.jar
这就是我得到的错误。这是否意味着我没有在spark提交中传递正确的参数

Exception in thread "main" java.lang.IllegalArgumentException: Missing application resource.
    at org.apache.spark.launcher.CommandBuilderUtils.checkArgument(CommandBuilderUtils.java:241)
    at org.apache.spark.launcher.SparkSubmitCommandBuilder.buildSparkSubmitArgs(SparkSubmitCommandBuilder.java:160)
    at org.apache.spark.launcher.SparkSubmitCommandBuilder.buildSparkSubmitCommand(SparkSubmitCommandBuilder.java:276)
    at org.apache.spark.launcher.SparkSubmitCommandBuilder.buildCommand(SparkSubmitCommandBuilder.java:151)
    at org.apache.spark.launcher.Main.main(Main.java:86)
Command exiting with ret '1'

tl;dr删除
--jars
选项并重新开始

java.lang.IllegalArgumentException:缺少应用程序资源

您错过了消息中称为“应用程序资源”的…嗯…Spark应用程序

当您执行
spark submit
并查看不同的命令行选项及其含义时,这一点更加明显

./bin/spark-submit
Usage: spark-submit [options] <app jar | python file | R file> [app arguments]
引用
spark submit--help
--jars

--jars-jars要包含在驱动程序和执行器类路径上的jar的逗号分隔列表

--jars
在Spark应用程序依赖于其他jar文件(也称为依赖项)时非常有用,例如,
mysql connect.jar
,您不能(或很可能不想)“组装”到uber jar。

--jars
选项是在您必须向应用程序jar提供支持jar时添加的

Application resource missing(应用程序资源丢失)意味着您的主jar丢失,因为您使用
--jars
选项传递它。它正在查找您的主jar,但由于找不到,因此抛出了该错误。

我从未使用过
--jar
(我直接指定了
jar
)的路径,但有一天
Spark
开始给我这个错误。将整个
spark submit
命令转换为单行(删除反斜杠和新行)解决了这个问题。奇怪。(
emr-5.13.0
上的火花2.3.0)
$ ./bin/spark-submit --jars target/spark-parent_2.11-2.3.0-SNAPSHOT-tests.jar
Exception in thread "main" java.lang.IllegalArgumentException: Missing application resource.
    at org.apache.spark.launcher.CommandBuilderUtils.checkArgument(CommandBuilderUtils.java:241)
    at org.apache.spark.launcher.SparkSubmitCommandBuilder.buildSparkSubmitArgs(SparkSubmitCommandBuilder.java:160)
    at org.apache.spark.launcher.SparkSubmitCommandBuilder.buildSparkSubmitCommand(SparkSubmitCommandBuilder.java:274)
    at org.apache.spark.launcher.SparkSubmitCommandBuilder.buildCommand(SparkSubmitCommandBuilder.java:151)
    at org.apache.spark.launcher.Main.main(Main.java:86)