【问题标题】:Spark-submit class not found exceptionSpark-submit 类未找到异常
【发布时间】:2015-09-03 04:31:28
【问题描述】:

我正在尝试使用此快速入门教程使用 spark submit 命令运行这个简单的 spark 应用程序。 http://spark.apache.org/docs/1.2.0/quick-start.html#self-contained-applications。当我尝试使用 spark-1.4.0-bin-hadoop2.6\bin>spark-submit --class 运行它时 SimpleApp" --master local[4] C:/.../Documents/Sparkapp/target/scala- 2.10/simple-project_2.10-1.0.jar 我得到以下异常:

java.lang.ClassNotFoundException: SimpleApp
    at java.net.URLClassLoader$1.run(Unknown Source)
    at java.net.URLClassLoader$1.run(Unknown Source)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.net.URLClassLoader.findClass(Unknown Source)
    at java.lang.ClassLoader.loadClass(Unknown Source)
    at java.lang.ClassLoader.loadClass(Unknown Source)
    at java.lang.Class.forName0(Native Method)
    at java.lang.Class.forName(Unknown Source)
    at org.apache.spark.deploy.SparkSubmit$.org$apache$spark$deploy$SparkSub
mit$$runMain(SparkSubmit.scala:633)
    at org.apache.spark.deploy.SparkSubmit$.doRunMain$1(SparkSubmit.scala:16
9)
    at org.apache.spark.deploy.SparkSubmit$.submit(SparkSubmit.scala:192)
    at org.apache.spark.deploy.SparkSubmit$.main(SparkSubmit.scala:111)
    at org.apache.spark.deploy.SparkSubmit.main(SparkSubmit.scala)
Using Spark's default log4j profile: org/apache/spark/log4j-defaults.properties
15/06/17 09:45:11 INFO Utils: Shutdown hook called

有谁知道如何解决这个问题?任何帮助是极大的赞赏。

【问题讨论】:

  • “SimpleApp”中有空格。这可能是问题所在。
  • 我认为这正是我的命令提示符显示它的方式。例如“: Shutdown hook called”中有一个空格。
  • 你能检查一下你的班级名称吗?您需要指定完全限定的类名,例如:--class com.my.awesome.perso.project.spark.SimpleApp。还要检查 jar 的路径:如果路径无效,spark-submit 不会抱怨缺少文件,而是会默默地忽略任何未找到的 jar,并稍后抱怨找不到类。
  • 我检查了 jar 的路径,看起来没问题。我检查了 bin 下的类文件的名称,它只是简单地命名为 SimpleApp.class 和 SimpleApp$.class。有问题吗?

标签: scala apache-spark


【解决方案1】:

另外,您可以将“local”设置为 master 以在本地运行它,更适合开发期。

【讨论】:

    【解决方案2】:

    对此的简单解决方案是检查您的类的全名,在我的情况下它是 main.java.SimpleApp 并且它有效。感谢 Svend 指出这一点

    【讨论】:

      【解决方案3】:

      问题是我们必须将类文件提交给我们要执行或将用作支持文件的spark集群,所以请按照以下步骤操作-

      1. 创建这个类的jar文件 -> 在 Eclipse 中,您可以将此类导出为 jar 文件。 -> 从命令行

        jar cf myJar.jar myClass.class

      2. 如下编辑你的代码 -

        val jarFile = "SimpleApp.jar"; #路径

        val conf = new SparkConf().setAppName("简单应用").setJars(Array(jarFile));

      【讨论】:

      • 我使用 sbt 创建了一个可执行的 jar。我尝试运行您在我的 spark shell 中建议的代码,但是当我尝试运行第二行时它显示“错误:未找到:键入 SparkConf”。知道如何解决这个问题吗?
      • 你必须导入一个 SparkConf() 类,将此行粘贴到 spark-shell -> import org.apache.spark.SparkConf
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-08-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-04-09
      相关资源
      最近更新 更多