Hive 包版本引发的血案

刚才打开自己在阿里云的一台服务器,并准备在上面测试Hive的一些功能,原以为很顺利,没想到一上来一个show databases;就报错了,如图

奇怪了,以前是没有问题的啊,为啥会出现这个错误呢?

定睛一看,十有八九是jar包冲突了,问题就是出在guava这个包里头,于是跑去hive下的lib上看一看

会不会guava的版本太高或者太低了,先试一试。

先后把guava-13.0.1.jar,guava-16.0.1.jar,guava-20.0.jar分别替换掉/data/aaron/app/hive-1.1.0-cdh5.12.2/lib目录底下的guava-14.0.1.jar。

不幸的是,进入hive之后重新show databases;,依然报开篇所说的那个错误。好吧,再仔细想想,这样的话,有可能依然还是guava这个包冲突了,就是说有可能某个地方guava的版本太高了,没有了emptyIterator()这个方法了,或者是被其他包覆盖了,这都是有可能的。

假设是第一种可能,某个地方guava的版本太高了,没有了emptyIterator()这个方法。先来看看guava是什么时候移除掉这个方法的。

https://github.com/google/guava/wiki/Release20

通过这个网址就能知道,在guava-20.0就把emptyIterator()这个方法移除掉,有图为证

那问题来了,我哪个地方用到了高版本的guava啊,find来看看

[hadoop@hadoop004 lib]$ find /data/aaron/ -name "guava*"

我还真用了高版本的guava,还把原来的11版本的guava做了个备份,好吧,估计问题就是出现在这里,直接把版本降回来

[hadoop@hadoop004 lib]$ mv /data/aaron/app/hadoop-2.6.0-cdh5.7.0/share/hadoop/common/lib/guava-20.0.jar /data/aaron/app/hadoop-2.6.0-cdh5.7.0/share/hadoop/common/lib/guava-20.0.jar.bak

[hadoop@hadoop004 lib]$ mv /data/aaron/app/hadoop-2.6.0-cdh5.7.0/share/hadoop/common/lib/guava-11.0.2.jar.bak /data/aaron/app/hadoop-2.6.0-cdh5.7.0/share/hadoop/common/lib/guava-11.0.2.jar

再运行Hive

妥了,搞定!!

 

 

 

 

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值