Problemi di installazione di Hive: il database di metastore Hive non è inizializzato

Ho provato ad installare hive su un Raspberry Pi 2. Ho installato Hive da un pacchetto Hress compresso con zip e ho configurato $ HADOOP_HOME e $ HIVE_HOME manualmente sotto il gruppo di utenti hduser che ho creato. Durante l’esecuzione di hive, ho ricevuto il seguente messaggio di errore: hive

ERROR StatusLogger Nessun file di configurazione log4j2 trovato. Utilizzo della configurazione predefinita: registrazione degli errori solo nella console.

Eccezione nel thread “main” java.lang.RuntimeException: il database metastore Hive non è inizializzato. Utilizzare schematool (es ./schematool -initSchema -dbType …) per creare lo schema. Se necessario, non dimenticare di includere l’opzione per creare automaticamente il database sottostante nella stringa di connessione JDBC (ad esempio, createDatabaseIfNotExist = true per mysql)

Così ho eseguito il comando suggerito nel precedente messaggio di errore: schematool -dbType derby -initSchema Ho ricevuto il messaggio di errore:

Errore: FUNCTION ‘NUCLEUS_ASCII’ esiste già. (stato = X0Y68, codice = 30000) org.apache.hadoop.hive.metastore.HiveMetaException: Inizializzazione dello schema NON RIUSCITA! Lo stato di Metastore sarebbe incoerente !! * schemaTool fallito *

Sembra che non ci siano informazioni utili quando provo a cercare su Google questo errore online. Qualsiasi aiuto o spiegazione su come Hive funziona con Derby sarebbe apprezzato!

Dopo aver installato hive, se la prima cosa che hai fatto è stata eseguire hive, hive ha tentato di creare / inizializzare il metastore_db, ma a quanto pare potrebbe non essere corretto. In quella corsa iniziale, forse hai visto il tuo errore:

Exception in thread "main" java.lang.RuntimeException: Hive metastore database is not initialized. Please use schematool (eg ./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 (eg ?createDatabaseIfNotExist=true for mysql) 

L’hive in esecuzione, anche se non riesce, crea una directory metastore_db nella directory da cui è stato eseguito l’hive:

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

Quindi quando hai provato a correre

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

Il metastore esisteva già, ma non in forma completa.

La risposta è così: la risposta è:

  1. Prima di eseguire hive per la prima volta, corri

    schematool -initSchema -dbType derby

  2. Se hai già eseguito hive e poi hai provato a initSchema, significa che non funziona:

    mv metastore_db metastore_db.tmp

  3. Ritorna

    schematool -initSchema -dbType derby

  4. Esegui di nuovo l’hive

** Anche di nota: se cambi le directory, il metastore_db creato sopra non sarà trovato! Sono sicuro che c’è una buona ragione per questo che ancora non conosco perché sto letteralmente cercando di usare l’hive per la prima volta oggi. Ahhh ecco le informazioni su questo: metastore_db creato ovunque io gestisca Hive

Ho installato l’hive con HomeBrew (MacOS) in / usr / local / Cellar / hive e dopo aver eseguito schematool -dbType derby -initSchema ottengo il seguente messaggio di errore:

Avvio dell’inizializzazione dello schema di metastore in 2.0.0 Script di inizializzazione hive-schema-2.0.0.derby.sql Errore: FUNCTION ‘NUCLEUS_ASCII’ esiste già. (stato = X0Y68, codice = 30000) org.apache.hadoop.hive.metastore.HiveMetaException: Inizializzazione dello schema NON RIUSCITA! Lo stato di Metastore sarebbe incoerente !!

Tuttavia, non riesco a trovare la cartella metastore_db o metastore_db.tmp sotto il percorso di installazione, quindi ho provato:

  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. commentare la funzione ‘NUCLEUS_ASCII’ e la funzione ‘NUCLEUS_MATCHES’
  4. schematool -dbType derby -initSchema , allora tutto va bene!

spero che questo aiuti qualcuno.

Ho riscontrato un problema simile, che ho risolto rimuovendo i file del database derby rm -Rf $HIVE_HOME/metastore_db

Essere consapevoli, questo rimuoverà completamente il tuo schema!

Dopo aver pulito il vecchio schema, ho potuto reinizializzare con:

 $HIVE_HOME/bin/schematool -initSchema -dbType derby 

Potrebbe differire da dove si chiama hive, provare ad andare nella directory di installazione del proprio hive ed eseguire ./bin/hive

Prova questo: schematool -dbType mysql -initSchema

Leggi la documentazione di Hive SchemTool: https://cwiki.apache.org/confluence/display/Hive/Hive+Schema+Tool