java.lang.illegalaccesserror:尝试访问方法com.google.common.collect.iterators.emptyiterator()

jgwigjjp  于 2021-06-25  发布在  Hive
关注(0)|答案(2)|浏览(927)

我正在使用hadoop3.2.1和hive2.3.6。当我运行show databases时,它显示以下错误

'''
hive> show databases;
Exception in thread "main" java.lang.IllegalAccessError: tried to access method com.google.common.collect.Iterators.emptyIterator()Lcom/google/common/collect/UnmodifiableIterator; from class org.apache.hadoop.hive.ql.exec.FetchOperator
    at org.apache.hadoop.hive.ql.exec.FetchOperator.<init>(FetchOperator.java:108)
    at org.apache.hadoop.hive.ql.exec.FetchTask.initialize(FetchTask.java:87)
    at org.apache.hadoop.hive.ql.Driver.compile(Driver.java:541)
    at org.apache.hadoop.hive.ql.Driver.compileInternal(Driver.java:1317)
    at org.apache.hadoop.hive.ql.Driver.runInternal(Driver.java:1457)
    at org.apache.hadoop.hive.ql.Driver.run(Driver.java:1237)
    at org.apache.hadoop.hive.ql.Driver.run(Driver.java:1227)
    at org.apache.hadoop.hive.cli.CliDriver.processLocalCmd(CliDriver.java:233)
    at org.apache.hadoop.hive.cli.CliDriver.processCmd(CliDriver.java:184)
    at org.apache.hadoop.hive.cli.CliDriver.processLine(CliDriver.java:403)
    at org.apache.hadoop.hive.cli.CliDriver.executeDriver(CliDriver.java:821)
    at org.apache.hadoop.hive.cli.CliDriver.run(CliDriver.java:759)
    at org.apache.hadoop.hive.cli.CliDriver.main(CliDriver.java:686)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:498)
    at org.apache.hadoop.util.RunJar.run(RunJar.java:323)
    at org.apache.hadoop.util.RunJar.main(RunJar.java:236)
'''

这是什么意思?为什么我会有这个错误?请澄清。
提前谢谢。

ldfqzlk8

ldfqzlk81#

如果您可以选择升级到apache-hive-3.1.2。我有完全相同的问题,这是解决了升级。另一个选择可能是比较hive2.3.6和hive3.1.2的lib文件夹;这个问题主要是由于jar不兼容造成的。

omhiaaxx

omhiaaxx2#

根据发布页面[1]Hive2.3.3可以与Hadoop2.x.y(而不是3.x.y)配合使用,因此如果您想与Hadoop3.2.1一起运行,请尝试更新的版本。
除此之外,这个错误看起来像是与guava相关的类路径问题。我猜你有一个来自hive的Guava版本和另一个来自hadoop的版本。尝试移除其中一个。例如:

cd apache-hive-2.3.3-bin/lib
rm guava*

即使你解决了上面的问题,你也很可能会遇到另一个问题,所以最好选择兼容的版本。
[1] https://hive.apache.org/downloads.html

相关问题