web-dev-qa-db-fra.com

Problèmes d'installation de Hive: la base de données de métastore Hive n'est pas initialisée

J'ai essayé d'installer Hive sur un Raspberry Pi 2. J'ai installé Hive en décompressant le paquet Hive compressé et configuré $ HADOOP_HOME et $ Hive_HOME manuellement sous le groupe d'utilisateurs hduser que j'ai créé. Lors de l'exécution de Hive, j'ai reçu le message d'erreur suivant: Hive

ERROR StatusLogger Aucun fichier de configuration log4j2 trouvé. Utilisation de la configuration par défaut: enregistrer uniquement les erreurs sur la console.

Exception dans le thread "principal" Java.lang.RuntimeException: la base de données de métastore Hive n'est pas initialisée. Veuillez utiliser schematool (par exemple ./schematool -initSchema -dbType ...) pour créer le schéma. Si nécessaire, n'oubliez pas d'inclure l'option permettant de créer automatiquement la base de données sous-jacente dans votre chaîne de connexion JDBC (par exemple? CreateDatabaseIfNotExist = true pour mysql).

J'ai donc lancé la commande suggérée dans le message d'erreur ci-dessus: schematool -dbType derby -initSchema J'ai reçu le message d'erreur:

Erreur: FUNCTION 'NUCLEUS_ASCII' existe déjà. (state = X0Y68, code = 30000) org.Apache.hadoop.Hive.metastore.HiveMetaException: l'initialisation du schéma a échoué! L'état de Metastore serait incohérent !! * schemaTool a échoué *

Il semble qu'il n'y ait pas d'informations utiles lorsque j'essaie de rechercher en ligne cette erreur sur Google. Toute aide ou explication sur le fonctionnement de Hive avec Derby serait appréciée!

37
As high as honor

Après avoir installé Hive, si la première chose que vous avez faite a été d’exécuter Hive, Hive a tenté de créer/d’initialiser metastore_db, mais il est possible qu’il ne réussisse apparemment pas. Lors de cette première exécution, vous avez peut-être vu votre erreur:

Exception in thread "main" Java.lang.RuntimeException: Hive metastore database is not initialized. Please use schematool (e.g. ./schematool -initSchema -dbType ...) to create the schema. If needed, don't forget to include the option to auto-create the underlying database in your JDBC connection string (e.g. ?createDatabaseIfNotExist=true for mysql)

L'exécution de Hive, même si elle échoue, crée un répertoire metastore_db dans le répertoire à partir duquel vous avez exécuté Hive:

ubuntu15-laptop: ~ $>ls -l |grep meta
drwxrwxr-x 5 testuser testuser 4096 Apr 14 12:44 metastore_db

Alors, quand vous avez ensuite essayé de courir

ubuntu15-laptop: ~ $>schematool -initSchema -dbType derby

Le métastore existait déjà, mais pas sous forme complète.

Soooooo la réponse est:

  1. Avant de lancer Hive pour la première fois, lancez

    schematool -initSchema -dbType derby

  2. Si vous avez déjà exécuté Hive puis essayé initSchema et que cela échoue:

    mv metastore_db metastore_db.tmp

  3. Re run

    schematool -initSchema -dbType derby

  4. Run Hive Again

** A noter également que si vous changez de répertoire, la metastore_db créée ci-dessus ne sera pas trouvée! Je suis sûr qu'il y a une bonne raison à cela que je ne connais pas encore parce que j'essaie littéralement d'utiliser Hive pour la première fois aujourd'hui. Ahhh voici des informations à ce sujet: metastore_db créé partout où je lance Hive

122
RJ Cole

J'ai installé Hive avec HomeBrew (MacOS) sous/usr/local/Cellar/Hive and afer sous schematool -dbType derby -initSchema Je reçois le message d'erreur suivant:

Démarrage de l'initialisation du schéma de métastore vers la version 2.0.0 Script d'initialisation Hive-schema-2.0.0.derby.sql Erreur: FUNCTION 'NUCLEUS_ASCII' existe déjà. (state = X0Y68, code = 30000) org.Apache.hadoop.Hive.metastore.HiveMetaException: l'initialisation du schéma a échoué! L'état de Metastore serait incohérent !!

Cependant, je ne trouve pas le dossier metastore_db ni metastore_db.tmp sous le chemin d'installation. J'ai donc essayé:

  1. find /usr/ -name Hive-schema-2.0.0.derby.sql
  2. vi /usr/local/Cellar/Hive/2.0.1/libexec/scripts/metastore/upgrade/derby/Hive-schema-2.0.0.derby.sql
  3. commenter la fonction 'NUCLEUS_ASCII' et la fonction 'NUCLEUS_MATCHES'
  4. réexécute schematool -dbType derby -initSchema, alors tout va bien!

espérons que cela aide quelqu'un.

17
dasu

J'ai rencontré un problème similaire, que j'ai corrigé en supprimant les fichiers de la base de données Derby rm -Rf $Hive_HOME/metastore_db

Attention, ceci supprimera complètement votre schéma!

Après avoir nettoyé l’ancien schéma, je pouvais réinitialiser avec:

$Hive_HOME/bin/schematool -initSchema -dbType derby

Cela peut différer de l'endroit où vous appelez Hive, essayez d'accéder à votre répertoire d'installation Hive et exécutez ./bin/Hive

11
stimpie

Essayez celui-ci: schematool -dbType mysql -initSchema

Lisez la documentation de Hive SchemTool: https://cwiki.Apache.org/confluence/display/Hive/Hive+Schema+Tool

1
Hamdi Charef