一、问题描述:
在学习林子雨老师编写的《Spark编程基础》时
使用如下命令运行jar包读取HBase时出现如下错误:Exception in thread “main” java.lang.NoSuchMethodError: com.google.comon.base.Preconditions.checkArgument(ZLjava/lang/String;Ljava/lang/object; )v
二、问题分析:
对此问题在配置hive时也有出现,问题主要是虚拟机内HBase,Spark,Hadoop三者的guava版本不一致导致的。在Hive的安装配置中也有提及。Hadoop的guava.jar存放在/share/common/lib目录下,HBase的guava.jar存放在lib文件夹下
三、解决方案:
只需要将三者中的低版本删除,高版本复制到低版本处即可,具体操作为:
查看Hadoop中的guava版本(根据自身环境修改路径)
cd /usr/local/hadoop/share/common/lib #进入目标文件夹
ll #查看guava.jar版本
1
2
查看HBase中的guava版本
cd /usr/local/hbase/lib
ll
1
2
查看Spark中的guava版本
cd /usr/local/spark/jars/hbase
ll
1
2
在我的虚拟机中Hadoop中的guava版本最高,为guava-27.0-jre.jar版本,所以我们将其复制到对应的HBase和Spark目录。
(sudo即将root权限赋给hadoop用户)
sudo cp guava-27.0-jre.jar /usr/local/hbase/lib
sudo cp guava-27.0-jre.jar /usr/local/spark/jars/hbase
1
2
再使用cd命令切换到HBase和Spark目录删除其中的guava。
(rm -rf 为删除命令,guava改成对应的版本号)
cd /usr/local/hbase/lib
sudo rm -rf guava的名字
cd /usr/local/spark/jars/hbase
sudo rm -rf guava的名字
1
2
3
4
再次运行,问题解决。
免责申明:
本文系转载,版权归原作者所有,如若侵权请联系我们进行删除!
《数据治理行业实践白皮书》下载地址:https://fs80.cn/4w2atu
《数栈V6.0产品白皮书》下载地址:https://fs80.cn/cw0iw1
想了解或咨询更多有关袋鼠云大数据产品、行业解决方案、客户案例的朋友,浏览袋鼠云官网:https://www.dtstack.com/?src=bbs
同时,欢迎对大数据开源项目有兴趣的同学加入「袋鼠云开源框架钉钉技术群」,交流最新开源技术信息,群号码:30537511,项目地址:https://github.com/DTStack