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!
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:
Avant de lancer Hive pour la première fois, lancez
schematool -initSchema -dbType derby
Si vous avez déjà exécuté Hive puis essayé initSchema et que cela échoue:
mv metastore_db metastore_db.tmp
Re run
schematool -initSchema -dbType derby
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
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é:
find /usr/ -name Hive-schema-2.0.0.derby.sql
vi /usr/local/Cellar/Hive/2.0.1/libexec/scripts/metastore/upgrade/derby/Hive-schema-2.0.0.derby.sql
schematool -dbType derby -initSchema
, alors tout va bien!espérons que cela aide quelqu'un.
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
Essayez celui-ci: schematool -dbType mysql -initSchema
Lisez la documentation de Hive SchemTool: https://cwiki.Apache.org/confluence/display/Hive/Hive+Schema+Tool