2017-09-19 1 views
1

J'essaie d'initialiser la base de données dans la ruche avant chaque exécution.Echec de la suppression de la base de données dans la ruche

Le code est:

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

exécution échoue avec l'erreur:

FAILED: Execution Error, return code 1 from org.apache.hadoop.hive.ql.exec.DDLTask. MetaException(message:Unable to clean up java.sql.SQLSyntaxErrorException: Table 'hive.COMPLETED_COMPACTIONS' doesn't exist

passe sur réexécution,

eval $command; 

Je ne peux pas expliquer le fait que lors de l'appel la commande pour plusieurs fois, il continue à échouer alternativement.

Appréciez pour des conseils sur ce qui se passe dans Hive et comment le faire fonctionner dès le premier essai, merci.


Détails: Hive 2.1 en cours d'exécution sur AWS DME 5.7, n'a pas vu un tel comportement sur HIVE 1.0

erreur Full Stack

FAILED: Execution Error, return code 1 from org.apache.hadoop.hive.ql.exec.DDLTask. MetaException(message:Unable to clean up java.sql.SQLSyntaxErrorException: Table 'hive.COMPLETED_COMPACTIONS' doesn't exist at org.mariadb.jdbc.internal.util.ExceptionMapper.get(ExceptionMapper.java:125) at org.mariadb.jdbc.internal.util.ExceptionMapper.throwException(ExceptionMapper.java:69) at org.mariadb.jdbc.MariaDbStatement.executeQueryEpilog(MariaDbStatement.java:259) at org.mariadb.jdbc.MariaDbStatement.execute(MariaDbStatement.java:287) at org.mariadb.jdbc.MariaDbStatement.executeUpdate(MariaDbStatement.java:470) at org.mariadb.jdbc.MariaDbStatement.executeUpdate(MariaDbStatement.java:486) at com.jolbox.bonecp.StatementHandle.executeUpdate(StatementHandle.java:497) at org.apache.hadoop.hive.metastore.txn.TxnHandler.cleanupRecords(TxnHandler.java:1721) at org.apache.hadoop.hive.metastore.AcidEventListener.onDropDatabase(AcidEventListener.java:51) at org.apache.hadoop.hive.metastore.HiveMetaStore$HMSHandler.drop_database_core(HiveMetaStore.java:1098) at 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) at org.apache.hadoop.hive.metastore.RetryingHMSHandler.invokeInternal(RetryingHMSHandler.java:140) at org.apache.hadoop.hive.metastore.RetryingHMSHandler.invoke(RetryingHMSHandler.java:99) at com.sun.proxy.$Proxy19.drop_database(Unknown Source) at org.apache.hadoop.hive.metastore.api.ThriftHiveMetastore$Processor$drop_database.getResult(ThriftHiveMetastore.java:10518) at org.apache.hadoop.hive.metastore.api.ThriftHiveMetastore$Processor$drop_database.getResult(ThriftHiveMetastore.java:10502) at org.apache.thrift.ProcessFunction.process(ProcessFunction.java:39) at org.apache.hadoop.hive.metastore.TUGIBasedProcessor$1.run(TUGIBasedProcessor.java:110) at org.apache.hadoop.hive.metastore.TUGIBasedProcessor$1.run(TUGIBasedProcessor.java:106) at java.security.AccessController.doPrivileged(Native Method) at javax.security.auth.Subject.doAs(Subject.java:422) at org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1698) at org.apache.hadoop.hive.metastore.TUGIBasedProcessor.process(TUGIBasedProcessor.java:118) at org.apache.thrift.server.TThreadPoolServer$WorkerProcess.run(TThreadPoolServer.java:286) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) at java.lang.Thread.run(Thread.java:748) Caused by: org.mariadb.jdbc.internal.util.dao.QueryException: Table 'hive.COMPLETED_COMPACTIONS' doesn't exist at org.mariadb.jdbc.internal.protocol.AbstractQueryProtocol.getResult(AbstractQueryProtocol.java:479) at org.mariadb.jdbc.internal.protocol.AbstractQueryProtocol.result(AbstractQueryProtocol.java:400) at org.mariadb.jdbc.internal.protocol.AbstractQueryProtocol.executeQuery(AbstractQueryProtocol.java:381) at org.mariadb.jdbc.internal.protocol.AbstractQueryProtocol.executeQuery(AbstractQueryProtocol.java:337) at org.mariadb.jdbc.MariaDbStatement.execute(MariaDbStatement.java:277) ... 27 more Blockquote

Répondre

1

On dirait votre schéma Ruche de Metastore doit être mis à jour. Vous pouvez vérifier la version du schéma avec la commande schematool.

Exemple de sortie:

Metastore URL de connexion: jdbc: mysql: // XXXXXXXXXXXXXXXX: 3306/ruche createDatabaseIfNotExist = true Metastore Connection Driver: org.mariadb.jdbc.Driver Connexion Metastore utilisateur: ruche Ruche version de distribution: 2.1.0 Version du schéma Metastore: 2.1.0

Si votre schéma de métastore et les versions de distribution Hive ne sont pas identiques, mettez à niveau le schéma.

Assurez-vous d'avoir une sauvegarde en premier, juste au cas où. Souvenez-vous également qu'il pourrait y avoir des changements au schéma qui rompt la fonctionnalité avec les anciennes distributions Hive, de sorte que vous ne pourrez peut-être pas partager un matastore entre les versions de la distribution Hive.

+0

il est logique, merci, nous allons le tester et je mettrai à jour –