2017-10-18 10 views
0

tout en essayant de mettre à jour la ruche de 2.1.0 à 2.3.0 obtenir erreur ci-dessous (mise à niveau en fait emr 5.7.0 à 5.8.0)nom en double clé tout en améliorant la ruche

init hive-metastore schema]/returns: 0: jdbc:mysql://connection_string-> CREATE INDEX PCS_STATS_IDX ON PART_COL_STATS (DB_NAME,TABLE_NAME,COLUMN_NAME,PARTITION_NAME) USING BTREE Notice: /Stage[main]/Hadoop_hive::Init_metastore_schema/Exec[init hive-metastore schema]/returns: Error: Duplicate key name 'PCS_STATS_IDX' (state=42000,code=1061) Notice: /Stage[main]/Hadoop_hive::Init_metastore_schema/Exec[init hive-metastore schema]/returns: Notice: /Stage[main]/Hadoop_hive::Init_metastore_schema/Exec[init hive-metastore schema]/returns: Closing: 0: jdbc:mysql://connection_string:3306/hive?createDatabaseIfNotExist=true Notice: /Stage[main]/Hadoop_hive::Init_metastore_schema/Exec[init hive-metastore schema]/returns: org.apache.hadoop.hive.metastore.HiveMetaException: Schema initialization FAILED! Metastore state would be inconsistent !! Notice: /Stage[main]/Hadoop_hive::Init_metastore_schema/Exec[init hive-metastore schema]/returns: at org.apache.hive.beeline.HiveSchemaTool.doInit(HiveSchemaTool.java:586) Notice: /Stage[main]/Hadoop_hive::Init_metastore_schema/Exec[init hive-metastore schema]/returns: ... 8 more Notice: /Stage[main]/Hadoop_hive::Init_metastore_schema/Exec[init hive-metastore schema]/returns: *** schemaTool failed ***

est-il un moyen de résoudre sans supprimer manuellement l'index PCS_STATS_IDX déjà créé dans le métastore externe de la ruche?

Répondre

0

C'est aussi quelque chose que j'ai observé avec les bases de MetaStore de ruche externe sur les instances RDS pour les clusters de DME. Il ne semble pas comme si AWS a une bonne solution encore pour l'une des versions emr-5 + - il est presque comme si elle devrait pouvoir ignorer ces scripts d'initialisation ruche-MetaStore si le schéma Metastore a déjà été créé. Une approche possible à travailler autour de c'est de laisser DME démarrer sa propre Metastore locale ruche (pour démarrer le cluster DME sans apporter de modifications à la première ruche site.xml), et après que le cluster a démarré, exécutez une étape de DME qui arrête ruche-server2 sudo stop hive-server2, modifie le /etc/hive/conf/hive-site.xml au point la ruche Metastore à l'instance externe RDS en insérant ces propriétés:

 <property> 
     <name>javax.jdo.option.ConnectionUserName</name> 
     <value>username</value> 
     </property> 

     <property> 
     <name>javax.jdo.option.ConnectionPassword</name> 
     <value>password</value> 
     </property> 

     <property> 
     <name>javax.jdo.option.ConnectionURL</name> 
     <value>jdbc:mysql://<rds instance connection string>:3306/db_name?createIfNotExist=true</value> 
     </property> 

et redémarrez ruche-server2 (sudo start hive-server2).

0

Ceci est probablement parce que votre Hive Version de distribution et schéma Metastore versions sont différentes. Utilisez @ [Kyle Meyer] pour lancer votre commande emr et exécutez ci-dessous pour vérifier les versions: schematool -dbType dbType -info Si elles ne correspondent pas, utilisez schematool pour passer de la version 2.1.0 à la version 2.3.0: schematool -dbType mysql -initSchemaTo 2.3.0

Cela vous donnera des erreurs que vous faites face maintenant. Pour résoudre ce problème, connectez-vous à votre base de données en utilisant un client tel que SQL Workbench. Il vous donnera principalement des erreurs comme "nom_table/index existe déjà". Supprimez ces tables/index à l'aide du client sql. Mais vous devrez supprimer ces tables/index tous ensemble. Vous devrez donc supprimer la table, puis exécuter la commande. Si cela donne encore une erreur pour une autre table/index, vous devrez supprimer les tables précédentes avec la table en cours dans l'erreur. Cela prendra du temps mais vous pourrez mettre à jour le schéma.