Hiveをダウンロードし、HADOOP_HOMEを変更しました
HADOOP_HOME=${bin}/../../usr/local/hadoop
私の実際のhadoopパスは
/usr/local/hadoop
.bashrcに以下のenv変数を追加しました
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/*:.
その後、bin/Hiveを使用してHiveを起動してみました。以下のエラーが表示されました
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)
私は同じ問題を抱えていて、このリンクから機能しました:
https://cwiki.Apache.org/confluence/display/Hive/Hive+on+Spark%3A+Getting+Started
したがって、次の手順に従う必要があります。
パス$ HADOOP_HOME/share/hadoop/yarn/lib/jline-0.9.94.jarの下のjline-0.9.94.jarファイルを削除してから試してください。
Jiraチケットへのリンクはこちら https://issues.Apache.org/jira/browse/Hive-8609
設定するだけです
HADOOP_USER_CLASSPATH_FIRST=true
そして、この問題に対して私にとってはうまくいきます。
このファイルのいずれかを削除してみてください
SLF4J:[jar:file:/usr/local/hadoop/share/hadoop/common/lib/slf4j-log4j12-1.7.5.jar!/ org/slf4j/implにバインディングが見つかりました/StaticLoggerBinder.class]
SLF4J:[jar:file:/usr/lib/Hive/Apache-Hive-1.1.0-bin/lib/Hive-jdbc-1.1.0-standalone.jarでバインディングが見つかりました! /org/slf4j/impl/StaticLoggerBinder.class]
次に、1つにバインドすることのみを選択すると思います。したがって、複数のバインディングは使用できなくなります
Hadoopバージョン2.4.1およびHive 1.2.0を使用。同じ問題がありました。 .bashrcでHADOOP_USER_CLASSPATH_FIRST = trueを設定した後
それは魅力のように働いた!!!
Cloudera CDH5.4でも同じ問題が発生しました。 yarn/libsフォルダーからjline-0.9.94.jarを削除するとうまくいきました。
これを行う locate jline
。
ファイルjline-0.9.94.jarは3つの場所にあり、3つの場所すべてから削除して、必要なエクスポートを実行します。
$ export HADOOP_USER_CLASSPATH_FIRST=true
Hadoopライブラリを初期化する必要があります。
$ vi ~/.bashrc
$ export HADOOP_USER_CLASSPATH_FIRST=true
$ source .bashrc
$ Hive
Hive(1.2.1)の新しいバージョンでは、installation/libフォルダーのjline-2.12.jarをjline-2.13.jarに置き換えるだけでした。
名前を変更しました
addJava "-Djline.terminal=jline.UnixTerminal"
に
addJava "-Djline.terminal=jline2.UnixTerminal"
「アクティベーター」ファイル内
このリンクを確認すると役立つ場合があります CLIからHiveを実行中に問題に直面しています