当我创建我的Spark应用程序的jar并尝试使用spark-submit
运行它时,我收到以下错误。
这是我以前运行的命令。
spark-submit --executor-memory 1g --jars s3://test-data-lab-users/spachari/test/test_2.10-1.0.jar
这是我得到的错误。这是否意味着我没有在我的spark-submit中传递正确的参数?
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'
答案 0 :(得分:11)
tl; dr 删除--jars
选项并重新开始。
java.lang.IllegalArgumentException:缺少应用程序资源。
你错过了......嗯......该消息称为“应用程序资源”的Spark应用程序。
执行spark-submit
并查看不同的命令行选项及其含义时,这一点更为明显。
./bin/spark-submit
Usage: spark-submit [options] <app jar | python file | R file> [app arguments]
那部分<app jar | python file | R file>
是你错过的。
要重现您的问题,您只需使用spark-submit
选项执行--jars
,而无需指定Spark应用程序的主jar或类。
$ ./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)
引用spark-submit --help
,--jars
是......
当Spark应用程序依赖于其他jar文件(也称为依赖项)时,- jars JARS 包含在驱动程序和执行程序类路径中的以逗号分隔的jar列表。
--jars
非常有用,即mysql-connect.jar
您不能(或者很可能不想)“汇编”到您的文件超级罐。
答案 1 :(得分:1)
--jars
选项。
缺少应用程序资源意味着您通过--jars
选项传递它时,主jar丢失了。它正在寻找您的主jar,因为找不到它,所以会抛出该错误。