【问题标题】:Why does spark-submit fail with "IllegalArgumentException: Missing application resource."?为什么 spark-submit 失败并显示“IllegalArgumentException:缺少应用程序资源。”?
【发布时间】:2019-03-27 08:44:52
【问题描述】:

当我创建我的 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'

【问题讨论】:

    标签: apache-spark


    【解决方案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]
    

    那部分&lt;app jar | python file | R file&gt; 是你错过的。

    要重现您的问题,您只需执行带有--jars 选项的spark-submit,而无需指定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 是...

    --jars JARS 包含在驱动程序和执行程序类路径中的 jar 的逗号分隔列表。

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

    【讨论】:

    • 我从不使用--jars(我直接指定JAR 的路径),但在Spark 的好日子开始给我这个错误。将整个 spark-submit 命令转换为单行(删除 反斜杠new-lines)解决了这个问题。奇怪的。 (Spark 2.3.0emr-5.13.0
    【解决方案2】:

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

    应用程序资源丢失意味着您的主 jar 丢失,因为您使用 --jars 选项传递了它。它正在寻找您的主 jar,但由于找不到它,因此会引发该错误。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-12-03
      • 1970-01-01
      • 1970-01-01
      • 2020-01-16
      • 1970-01-01
      • 2016-04-07
      • 2017-05-09
      • 2018-06-04
      相关资源
      最近更新 更多