为什么Spark不能在这个Jar中找到类?

时间:2015-02-10 21:10:56

标签: java maven jar apache-spark

我是新来的火花。我正在尝试编译并运行一个spark应用程序,该应用程序需要来自本地计算机上的(外部)jar文件的类。如果我打开jar(在〜/桌面上)我可以在本地jar中看到缺少的类但是当我运行spark时我得到了

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

如何解决此错误?

2 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分:0)

您应该使用主类的完整路径 对于前者: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机器的权限。