未能在Hive中删除数据库

时间:2017-09-19 09:12:00

标签: hive amazon-emr

我尝试在每次运行之前在hive中初始化数据库。

代码是:

command="hive -e \"drop database if exists some_db cascade; create database some_db\"";
eval $command;

执行因错误而失败:

  

失败:执行错误,从org.apache.hadoop.hive.ql.exec.DDLTask返回代码1。 MetaException(消息:无法清除java.sql.SQLSyntaxErrorException:表' hive.COMPLETED_COMPACTIONS'不存在

传递重新运行,

eval $command;

我也无法解释这样一个事实:当多次调用命令时,它会一直交替失败。

感谢对Hive中发生的事情的建议,以及如何让它在第一次尝试时起作用,谢谢。

详细说明: 在AWS EMR 5.7上运行的Hive 2.1,在HIVE 1.0上没有看到这样的行为

完整错误堆栈

  

失败:执行错误,从org.apache.hadoop.hive.ql.exec.DDLTask返回代码1。 MetaException(消息:无法清除java.sql.SQLSyntaxErrorException:表' hive.COMPLETED_COMPACTIONS'不存在           在org.mariadb.jdbc.internal.util.ExceptionMapper.get(ExceptionMapper.java:125)           at org.mariadb.jdbc.internal.util.ExceptionMapper.throwException(ExceptionMapper.java:69)           在org.mariadb.jdbc.MariaDbStatement.executeQueryEpilog(MariaDbStatement.java:259)           在org.mariadb.jdbc.MariaDbStatement.execute(MariaDbStatement.java:287)           在org.mariadb.jdbc.MariaDbStatement.executeUpdate(MariaDbStatement.java:470)           在org.mariadb.jdbc.MariaDbStatement.executeUpdate(MariaDbStatement.java:486)           at com.jolbox.bonecp.StatementHandle.executeUpdate(StatementHandle.java:497)           在org.apache.hadoop.hive.metastore.txn.TxnHandler.cleanupRecords(TxnHandler.java:1721)           在org.apache.hadoop.hive.metastore.AcidEventListener.onDropDatabase(AcidEventListener.java:51)           在org.apache.hadoop.hive.metastore.HiveMetaStore $ HMSHandler.drop_database_core(HiveMetaStore.java:1098)           在org.apache.hadoop.hive.metastore.HiveMetaStore $ HMSHandler.drop_database(HiveMetaStore.java:1130)           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)           在org.apache.hadoop.hive.metastore.RetryingHMSHandler.invokeInternal(RetryingHMSHandler.java:140)           在org.apache.hadoop.hive.metastore.RetryingHMSHandler.invoke(RetryingHMSHandler.java:99)           at com.sun.proxy。$ Proxy19.drop_database(Unknown Source)           在org.apache.hadoop.hive.metastore.api.ThriftHiveMetastore $ Processor $ drop_database.getResult(ThriftHiveMetastore.java:10518)           在org.apache.hadoop.hive.metastore.api.ThriftHiveMetastore $ Processor $ drop_database.getResult(ThriftHiveMetastore.java:10502)           在org.apache.thrift.ProcessFunction.process(ProcessFunction.java:39)           在org.apache.hadoop.hive.metastore.TUGIBasedProcessor $ 1.run(TUGIBasedProcessor.java:110)           在org.apache.hadoop.hive.metastore.TUGIBasedProcessor $ 1.run(TUGIBasedProcessor.java:106)           at java.security.AccessController.doPrivileged(Native Method)           在javax.security.auth.Subject.doAs(Subject.java:422)           在org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1698)           在org.apache.hadoop.hive.metastore.TUGIBasedProcessor.process(TUGIBasedProcessor.java:118)           在org.apache.thrift.server.TThreadPoolServer $ WorkerProcess.run(TThreadPoolServer.java:286)           在java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)           at java.util.concurrent.ThreadPoolExecutor $ Worker.run(ThreadPoolExecutor.java:624)           在java.lang.Thread.run(Thread.java:748)   引起:org.mariadb.jdbc.internal.util.dao.QueryException:表' hive.COMPLETED_COMPACTIONS'不存在           在org.mariadb.jdbc.internal.protocol.AbstractQueryProtocol.getResult(AbstractQueryProtocol.java:479)           在org.mariadb.jdbc.internal.protocol.AbstractQueryProtocol.result(AbstractQueryProtocol.java:400)           在org.mariadb.jdbc.internal.protocol.AbstractQueryProtocol.executeQuery(AbstractQueryProtocol.java:381)           在org.mariadb.jdbc.internal.protocol.AbstractQueryProtocol.executeQuery(AbstractQueryProtocol.java:337)           在org.mariadb.jdbc.MariaDbStatement.execute(MariaDbStatement.java:277)           ......还有27个   块引用

1 个答案:

答案 0 :(得分:1)

看起来您的Hive Metastore架构需要升级。您可以使用schematool命令检查架构版本。

示例输出:

Metastore连接URL:jdbc:mysql:// XXXXXXXXXXXXXXXX:3306 / hive?createDatabaseIfNotExist = true Metastore连接驱动程序:org.mariadb.jdbc.Driver Metastore连接用户:配置单元 Hive发行版:2.1.0 Metastore架构版本:2.1.0

如果您的Metastore架构和Hive分发版本不同,请升级架构。

请确保您先备份,以防万一。还要记住,可能会对架构进行更改,从而破坏旧版Hive发行版的功能,因此您可能无法在Hive发行版之间共享matastore。