【问题标题】:Why can't Spark find the classes in this Jar?为什么 Spark 在这个 Jar 中找不到类?
【发布时间】:2015-04-11 02:03:02
【问题描述】:

我是新来的火花。我正在尝试编译和运行一个 spark 应用程序,该应用程序需要本地机器上的(外部)jar 文件中的类。如果我打开 jar(在 ~/Desktop 上),我可以在本地 jar 中看到缺少的类,但是当我运行 spark 我得到 ​​p>

NoClassDefFoundError: edu/stanford/nlp/ie/AbstractSequenceClassifier

我像这样将 jar 添加到 spark 上下文中

String[] jars = {"/home/pathto/Desktop/stanford-corenlp-3.5.0.jar"};
SparkConf conf = new SparkConf().setAppName("Simple Application").setJars(jars);

然后我尝试运行这样的提交脚本

/home/pathto/Downloads/spark-1.2.0-bin-hadoop2.4/bin/spark-submit \
  --class "SimpleApp" \
  --master local[4] \
  target/simple-project-1.0.jar \
  --jars local[4] /home/abe/Desktop/stanford-corenlp-3.5.0.jar

然后点击 NoClassDefFoundError。

我知道这意味着工作线程无法从 jar 中找到类。但我不确定我做错了什么。我为最后一行(如下)尝试了不同的语法,但都没有。

  --addJars local[4] /home/abe/Desktop/stanford-corenlp-3.5.0.jar
  --addJars local:/home/abe/Desktop/stanford-corenlp-3.5.0.jar
  --addJars local:/home/abe/Desktop/stanford-corenlp-3.5.0.jar

我该如何解决这个错误?

【问题讨论】:

  • 您是否也收到了ClassNotFoundExceptionstackoverflow.com/a/5756989/3318517
  • @DanielDarabos 是的。我得到了那个例外
  • 作为一种解决方法,我将依赖项打包到主应用程序 jar 中,并使用 Maven 进行部署。这让它工作了。但问题仍然悬而未决。
  • 我很困惑你在 --master local[4] 模式下找不到 jars,我认为这绕过了所有 jar 问题。当我开发一个程序时,我从来没有遇到过“找不到 jars”类型的错误,直到我在独立集群模式下运行。
  • 这个问题你解决了吗? I have the same right now.

标签: java maven jar apache-spark


【解决方案1】:

尝试使用file:/path/to/jar/jarfile.jar/ 指定jar 文件位置。使用local: 意味着jar 文件必须已经存在于每个工作节点的指定位置。有关详细信息,请参阅Submitting Applications 文档的“高级依赖管理”部分。

【讨论】:

    【解决方案2】:

    您应该使用主类的完整路径 例如。 : com.package.MyMainClass

    ./bin/spark-submit --class com.MyMainClass /home/hadoop/Documents/Harish/HelloSpark-0.0.1-SNAPSHOT.jar -config /home/hadoop/Documents/Harish/Config.properties

    这是我用的....还要检查linux机器上的权限。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-09-08
      • 2019-12-26
      • 1970-01-01
      • 2011-05-13
      • 2015-08-06
      • 2011-09-06
      • 2013-08-21
      • 1970-01-01
      相关资源
      最近更新 更多