博主最开始接触hive时,使用的还是0.14版本,这个版本用着相当不爽,bug百出,也没有多少内置的函数,in的子查询还报错。。。。。但是博主凭着强大的sql能力,巧妙的绕过了不能使用的函数以及子查询等。但是没有这些内置函数和语法的不健全,博主去下载了一个hive2.3版本。但是问题就出现了。
ERROR session.SessionState: Error setting up authorization: java.lang.RuntimeException: Unable to instantiate org.apache.hadoop.hive.ql.metadata.SessionHiveMetaStoreClient
org.apache.hadoop.hive.ql.metadata.HiveException: java.lang.RuntimeException: Unable to instantiate org.apache.hadoop.hive.ql.metadata.SessionHiveMetaStoreClient
at org.apache.hadoop.hive.ql.session.SessionState.setAuthorizerV2Config(SessionState.java:917) ~[hive-exec-2.3.4.jar:2.3.4]
at org.apache.hadoop.hive.ql.session.SessionState.setupAuth(SessionState.java:877) [hive-exec-2.3.4.jar:2.3.4]
at org.apache.hadoop.hive.ql.session.SessionState.applyAuthorizationPolicy(SessionState.java:1683) [hive-exec-2.3.4.jar:2.3.4]
at org.apache.hive.service.cli.CLIService.applyAuthorizationConfigPolicy(CLIService.java:130) [hive-service-2.3.4.jar:2.3.4]
at org.apache.hive.service.cli.CLIService.init(CLIService.java:114) [hive-service-2.3.4.jar:2.3.4]
at org.apache.hive.service.cli.thrift.EmbeddedThriftBinaryCLIService.init(EmbeddedThriftBinaryCLIService.java:45) [hive-service-2.3.4.jar:2.3.4]
at org.apache.hive.jdbc.HiveConnection.<init>(HiveConnection.java:177) [hive-jdbc-2.3.4.jar:2.3.4]
at org.apache.hive.jdbc.HiveDriver.connect(HiveDriver.java:107) [hive-jdbc-2.3.4.jar:2.3.4]
at java.sql.DriverManager.getConnection(DriverManager.java:664) [?:1.8.0_91]
at java.sql.DriverManager.getConnection(DriverManager.java:208) [?:1.8.0_91]
at org.apache.hive.beeline.DatabaseConnection.connect(DatabaseConnection.java:145) [hive-beeline-2.3.4.jar:2.3.4]
at org.apache.hive.beeline.DatabaseConnection.getConnection(DatabaseConnection.java:209) [hive-beeline-2.3.4.jar:2.3.4]
at org.apache.hive.beeline.Commands.connect(Commands.java:1641) [hive-beeline-2.3.4.jar:2.3.4]
at org.apache.hive.beeline.Commands.connect(Commands.java:1536) [hive-beeline-2.3.4.jar:2.3.4]
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:1.8.0_91]
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[?:1.8.0_91]
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:1.8.0_91]
at java.lang.reflect.Method.invoke(Method.java:498) ~[?:1.8.0_91]
at org.apache.hive.beeline.ReflectiveCommandHandler.execute(ReflectiveCommandHandler.java:56) [hive-beeline-2.3.4.jar:2.3.4]
at org.apache.hive.beeline.BeeLine.execCommandWithPrefix(BeeLine.java:1273) [hive-beeline-2.3.4.jar:2.3.4]
at org.apache.hive.beeline.BeeLine.dispatch(BeeLine.java:1312) [hive-beeline-2.3.4.jar:2.3.4]
at org.apache.hive.beeline.BeeLine.connectUsingArgs(BeeLine.java:867) [hive-beeline-2.3.4.jar:2.3.4]
at org.apache.hive.beeline.BeeLine.initArgs(BeeLine.java:776) [hive-beeline-2.3.4.jar:2.3.4]
at org.apache.hive.beeline.BeeLine.begin(BeeLine.java:1010) [hive-beeline-2.3.4.jar:2.3.4]
at org.apache.hive.beeline.BeeLine.mainWithInputRedirection(BeeLine.java:519) [hive-beeline-2.3.4.jar:2.3.4]
at org.apache.hive.beeline.BeeLine.main(BeeLine.java:501) [hive-beeline-2.3.4.jar:2.3.4]
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:1.8.0_91]
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[?:1.8.0_91]
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:1.8.0_91]
at java.lang.reflect.Method.invoke(Method.java:498) ~[?:1.8.0_91]
at org.apache.hadoop.util.RunJar.run(RunJar.java:244) [hadoop-common-2.9.2.jar:?]
at org.apache.hadoop.util.RunJar.main(RunJar.java:158) [hadoop-common-2.9.2.jar:?]
Caused by: org.apache.hadoop.hive.ql.metadata.HiveException: java.lang.RuntimeException: Unable to instantiate org.apache.hadoop.hive.ql.metadata.SessionHiveMetaStoreClient
at org.apache.hadoop.hive.ql.metadata.Hive.registerAllFunctionsOnce(Hive.java:236) ~[hive-exec-2.3.4.jar:2.3.4]
at org.apache.hadoop.hive.ql.metadata.Hive.<init>(Hive.java:388) ~[hive-exec-2.3.4.jar:2.3.4]
at org.apache.hadoop.hive.ql.metadata.Hive.create(Hive.java:332) ~[hive-exec-2.3.4.jar:2.3.4]
at org.apache.hadoop.hive.ql.metadata.Hive.getInternal(Hive.java:312) ~[hive-exec-2.3.4.jar:2.3.4]
at org.apache.hadoop.hive.ql.metadata.Hive.get(Hive.java:288) ~[hive-exec-2.3.4.jar:2.3.4]
at org.apache.hadoop.hive.ql.session.SessionState.setAuthorizerV2Config(SessionState.java:913) ~[hive-exec-2.3.4.jar:2.3.4]
... 31 more
问题描述:无论是使用beeline登录hive,还是直接使用hive登录,在操作数据库时都会报错元数据异常的问题。后来博主使用客户端登录hive,一行一行的看异常终于找到了这个
主要原因:
schema元数据版本不一致,hive使用的是2.3.0版本的schema,但是现在的版本是1.2.0。于是去mysql中找到meta库,看了一下
博主把1.2.0改成的2.3.0。结果可以用了。但是没过多久发现又变成了1.2.0。我经常使用sparkSQL操作过hive,所以问题一定出现在这。我就做了一个尝试。把hive的schema版本先改成2.3.0 经过spark操作后,果然变成了1.2.0 。
解决办法:hive降级—使用hive1.2.1稳定版本
1、(无论spark的版本是多少只要别太低就行)下载hive1.2.1解压
2、配置一下hive-site.xml和hive-env.sh
3、命令行启动hive。
4、show databases 原本的数据表可以完美兼容。