我是新来的火花。我正在尝试编译并运行一个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
如何解决此错误?
答案 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机器的权限。