[hive]InvalidObjectException(message:Role admin already exists.)

来源:互联网 发布:linux下编译c程序 编辑:程序博客网 时间:2024/06/13 07:04
15/08/20 10:05:50 [main]: DEBUG metastore.HiveMetaStore: public role already existsInvalidObjectException(message:Role public already exists.)at org.apache.hadoop.hive.metastore.ObjectStore.addRole(ObjectStore.java:3223)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:497)at org.apache.hadoop.hive.metastore.RawStoreProxy.invoke(RawStoreProxy.java:114)at com.sun.proxy.$Proxy6.addRole(Unknown Source)at org.apache.hadoop.hive.metastore.HiveMetaStore$HMSHandler.createDefaultRoles_core(HiveMetaStore.java:665)at org.apache.hadoop.hive.metastore.HiveMetaStore$HMSHandler.createDefaultRoles(HiveMetaStore.java:645)at org.apache.hadoop.hive.metastore.HiveMetaStore$HMSHandler.init(HiveMetaStore.java:462)at org.apache.hadoop.hive.metastore.RetryingHMSHandler.<init>(RetryingHMSHandler.java:66)at org.apache.hadoop.hive.metastore.RetryingHMSHandler.getProxy(RetryingHMSHandler.java:72)at org.apache.hadoop.hive.metastore.HiveMetaStore.newRetryingHMSHandler(HiveMetaStore.java:5762)at org.apache.hadoop.hive.metastore.HiveMetaStoreClient.<init>(HiveMetaStoreClient.java:199)at org.apache.hadoop.hive.ql.metadata.SessionHiveMetaStoreClient.<init>(SessionHiveMetaStoreClient.java:74)at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)at java.lang.reflect.Constructor.newInstance(Constructor.java:422)at org.apache.hadoop.hive.metastore.MetaStoreUtils.newInstance(MetaStoreUtils.java:1521)at org.apache.hadoop.hive.metastore.RetryingMetaStoreClient.<init>(RetryingMetaStoreClient.java:86)at org.apache.hadoop.hive.metastore.RetryingMetaStoreClient.getProxy(RetryingMetaStoreClient.java:132)at org.apache.hadoop.hive.metastore.RetryingMetaStoreClient.getProxy(RetryingMetaStoreClient.java:104)at org.apache.hadoop.hive.ql.metadata.Hive.createMetaStoreClient(Hive.java:3005)at org.apache.hadoop.hive.ql.metadata.Hive.getMSC(Hive.java:3024)at org.apache.hadoop.hive.ql.metadata.Hive.getAllDatabases(Hive.java:1234)at org.apache.hadoop.hive.ql.metadata.Hive.reloadFunctions(Hive.java:174)at org.apache.hadoop.hive.ql.metadata.Hive.<clinit>(Hive.java:166)at org.apache.hadoop.hive.ql.session.SessionState.start(SessionState.java:503)at org.apache.hadoop.hive.cli.CliDriver.run(CliDriver.java:677)at org.apache.hadoop.hive.cli.CliDriver.main(CliDriver.java:621)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:497)at org.apache.hadoop.util.RunJar.main(RunJar.java:212)


出现以上信息,是因为保存hive元数据的mysql数据库字符集不是Latin1( 一般企业的mysql为了支持中文,都设置为UTF8 )

临时做法在mysql中执行  alter database hive character set latin1;


但是如果hive的元数据中也包含中文的话,要将mysql中存储注释的那几个字段的字符集单独修改为utf8

#修改字段注释字符集alter table COLUMNS modify column COMMENT varchar(256) character set utf8;#修改表注释字符集alter table TABL_PARAMS modify column PARAM_VALUE varchar(4000) character set utf8;#最后别忘记修改hive的jdbc连接,将字符集修改为utf8,如javax.jdo.option.ConnectionURLjdbc:mysql://192.168.0.128:3306/hive?characterEncoding=UTF-8

参考:

http://www.myexception.cn/web/1961134.html

http://www.cnblogs.com/ggjucheng/archive/2013/01/03/2842824.html

0 0
原创粉丝点击