web-dev-qa-db-fra.com

Démarrage Hive - [ERROR] L'initialisation du terminal a échoué; retomber sur non pris en charge

J'ai téléchargé Hive et modifié HADOOP_HOME sur

HADOOP_HOME=${bin}/../../usr/local/hadoop

mon chemin de hadoop actuel est 

/usr/local/hadoop

dans .bashrc j'ai ajouté les variables env ci-dessous 

export Hive_HOME=/usr/lib/Hive/Apache-Hive-1.1.0-bin
export PATH=$PATH:$Hive_HOME/bin
export CLASSPATH=$CLASSPATH:/usr/local/Hadoop/lib/*:.
export CLASSPATH=$CLASSPATH:/usr/local/Hive/lib/*:.

puis j'ai essayé de démarrer Hive en utilisant bin/Hive. J'ai l'erreur ci-dessous

Logging initialized using configuration in jar:file:/usr/lib/Hive/Apache-Hive-1.1.0-bin/lib/Hive-common-1.1.0.jar!/Hive-log4j.properties
SLF4J: Class path contains multiple SLF4J bindings.
SLF4J: Found binding in [jar:file:/usr/local/hadoop/share/hadoop/common/lib/slf4j-log4j12-1.7.5.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: Found binding in [jar:file:/usr/lib/Hive/Apache-Hive-1.1.0-bin/lib/Hive-jdbc-1.1.0-standalone.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: See http://www.slf4j.org/codes.html#multiple_bindings for an explanation.
SLF4J: Actual binding is of type [org.slf4j.impl.Log4jLoggerFactory]
[ERROR] Terminal initialization failed; falling back to unsupported
Java.lang.IncompatibleClassChangeError: Found class jline.Terminal, but interface was expected
    at jline.TerminalFactory.create(TerminalFactory.Java:101)
    at jline.TerminalFactory.get(TerminalFactory.Java:158)
    at jline.console.ConsoleReader.<init>(ConsoleReader.Java:229)
    at jline.console.ConsoleReader.<init>(ConsoleReader.Java:221)
    at jline.console.ConsoleReader.<init>(ConsoleReader.Java:209)
    at org.Apache.hadoop.Hive.cli.CliDriver.getConsoleReader(CliDriver.Java:773)
    at org.Apache.hadoop.Hive.cli.CliDriver.executeDriver(CliDriver.Java:715)
    at org.Apache.hadoop.Hive.cli.CliDriver.run(CliDriver.Java:675)
    at org.Apache.hadoop.Hive.cli.CliDriver.main(CliDriver.Java:615)
    at Sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at Sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.Java:57)
    at Sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.Java:43)
    at Java.lang.reflect.Method.invoke(Method.Java:606)
    at org.Apache.hadoop.util.RunJar.run(RunJar.Java:221)
    at org.Apache.hadoop.util.RunJar.main(RunJar.Java:136)

Exception in thread "main" Java.lang.IncompatibleClassChangeError: Found class jline.Terminal, but interface was expected
    at jline.console.ConsoleReader.<init>(ConsoleReader.Java:230)
    at jline.console.ConsoleReader.<init>(ConsoleReader.Java:221)
    at jline.console.ConsoleReader.<init>(ConsoleReader.Java:209)
    at org.Apache.hadoop.Hive.cli.CliDriver.getConsoleReader(CliDriver.Java:773)
    at org.Apache.hadoop.Hive.cli.CliDriver.executeDriver(CliDriver.Java:715)
    at org.Apache.hadoop.Hive.cli.CliDriver.run(CliDriver.Java:675)
    at org.Apache.hadoop.Hive.cli.CliDriver.main(CliDriver.Java:615)
    at Sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at Sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.Java:57)
    at Sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.Java:43)
    at Java.lang.reflect.Method.invoke(Method.Java:606)
    at org.Apache.hadoop.util.RunJar.run(RunJar.Java:221)
    at org.Apache.hadoop.util.RunJar.main(RunJar.Java:136)
22
Venkat

J'ai eu le même problème et je l'ai obtenu à partir de ce lien: 

https://cwiki.Apache.org/confluence/display/Hive/Hive+on+Spark%3A+Getting+Started

  • Hive a été mis à niveau vers Jline2 mais jline 0.9x existe dans la librairie Hadoop.

Donc, vous devriez suivre ces étapes:

  1. Supprimez jline du répertoire lib Hadoop (il est uniquement importé de manière transitoire à partir de ZooKeeper).
  2. export HADOOP_USER_CLASSPATH_FIRST = true
63
Rodrigo Salvo

Essayez de supprimer le fichier jline-0.9.94.jar sous le chemin $ HADOOP_HOME/share/hadoop/yarn/lib/jline-0.9.94.jar. 

Voici le lien vers le billet jira https://issues.Apache.org/jira/browse/Hive-8609

8
uday sharma

Je viens de mettre le 

HADOOP_USER_CLASSPATH_FIRST=true

et cela fonctionne pour moi pour ce problème.

5
krish727

Essayez de supprimer l'un de ce fichier

SLF4J: Lien trouvé dans [ jar: fichier: /usr/local/hadoop/share/hadoop/common/lib/slf4j-log4j12-1.7.5.jar! /Org/slf4j/impl/StaticLoggerBinder.class ]

SLF4J: Liaison trouvée dans [ jar: fichier: /usr/lib/Hive/Apache-Hive-1.1.0.0-bin/lib/Hive-jdbc-1.1.0-standalone.jar!/Org/slf4j/impl/StaticLoggerBinder.class ]

alors je pense qu'il ne choisira que de se lier à un. de sorte que la liaison multiple ne sera plus disponible

4
Mund

Avec Hadoop version 2.4.1 et Hive 1.2.0. J'ai eu le même problème. Et après avoir défini HADOOP_USER_CLASSPATH_FIRST = true dans .bashrc

Ça a marché comme sur des roulettes!!!

1
Mohammed Asad

J'ai eu le même problème avec Cloudera CDH5.4. Supprimer jline-0.9.94.jar du dossier yarn/libs a fonctionné pour moi.

1
raja

Faites ceci locate jline.

Le fichier, jline-0.9.94.jar, est situé à 3 endroits, supprimez-le de tous les 3 et faites l’export nécessaire:

$ export HADOOP_USER_CLASSPATH_FIRST=true
1
Divas

Vous devriez initier la librairie hadoop:

$ vi ~/.bashrc
$ export HADOOP_USER_CLASSPATH_FIRST=true
$ source .bashrc
$ Hive
0
KARTHIKEYAN.A

Avec la nouvelle version de Hive (1.2.1), il me suffisait de remplacer jline-2.12.jar par jline-2.13.jar dans le dossier installation/lib.

0
mountrix

J'ai renommé 

addJava "-Djline.terminal=jline.UnixTerminal" 

à 

addJava "-Djline.terminal=jline2.UnixTerminal"

dans le fichier "activateur"

0
raoulsson

vérifiez ce lien, il pourrait vous aider Problème lors de l’exécution de Hive à partir de CLI

0
Qasim