关于spark-submit之后,报错NoClassDefFoundError

NoClassDefFoundError:org.apache.hadoop.hdfs.server.namenode.NameNode

这个问题,困扰了我五天时间,之前使用Eclispe打包之后,在云服务器上面运行。

首先报错java.lang.NoClassDefFoundError: org/apache/hadoop/hbase/HBaseConfiguration。随之采取的操作是:将$HBASE_HOME/lib的jar包全部拷贝到$SPARK_HOME/jars下。我先保留了spark中的较新版本的jar包,发现问题变成了噩梦般的NoClassDefFoundError:Could not initialize class org.apache.hadoop.hdfs.server.namenode。(就是这个错,让我一直以为是Hadoop的配置有问题...)

然后我尝试了保留hbase的所有jar包到spark之后,发现还是一样的问题。当时我就懵了。

于是我不断Google并尝试了如下所有操作:

在spark-env.sh中加入:SPAKR_COMMON_HOME; 加入:SPARK_PREFIX;

在Hadoop中拷贝所有jar包到spark;

重新搭建云服务器集群×3;

在spark-submit命令中,指定--driver-class-path;指定--jars等等等等,总计不下二十种方法来解决这个问题。但是无一不是相同的错误:NoClassDefFoundError:Could not initialize class org.apache.hadoop.hdfs.server.namenode。在很奇怪的同时,我不甘心会因为这个问题把我活生生卡住,在考虑到是spark执行任务找不到hdfs之后,继续搜索,发现并没有哪位前辈的帖子里有涉及hadoop的jar包到spark中去,于是,我删除了spark-env.sh中的SPARK_CLASSPATH,改于在spark-submit命令中进行制定。

最终指令为:

bin/spark-submit --class package.test --jars $(echo $HBASE_HOME/lib/*.jar | tr ' ' ',' ) --master local[5] /opt/RecommendSystem-1.0.jar 

--class后面的为完整报名.类名

问题解决。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值