我正在使用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)
'''
这是什么意思?为什么我会有这个错误?请澄清。
提前谢谢。
2条答案
按热度按时间ldfqzlk81#
如果您可以选择升级到apache-hive-3.1.2。我有完全相同的问题,这是解决了升级。另一个选择可能是比较hive2.3.6和hive3.1.2的lib文件夹;这个问题主要是由于jar不兼容造成的。
omhiaaxx2#
根据发布页面[1]Hive2.3.3可以与Hadoop2.x.y(而不是3.x.y)配合使用,因此如果您想与Hadoop3.2.1一起运行,请尝试更新的版本。
除此之外,这个错误看起来像是与guava相关的类路径问题。我猜你有一个来自hive的Guava版本和另一个来自hadoop的版本。尝试移除其中一个。例如:
即使你解决了上面的问题,你也很可能会遇到另一个问题,所以最好选择兼容的版本。
[1] https://hive.apache.org/downloads.html