インストール後jdk9
私はこの問題を見てきました:
$Hive
Java HotSpot(TM) 64-Bit Server VM warning: Ignoring option MaxPermSize; support was removed in 8.0
SLF4J: Class path contains multiple SLF4J bindings.
SLF4J: Found binding in [jar:file:/usr/local/Cellar/Hive/2.3.1/libexec/lib/log4j-slf4j-impl-2.6.2.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: Found binding in [jar:file:/usr/local/Cellar/hadoop/2.8.1/libexec/share/hadoop/common/lib/slf4j-log4j12-1.7.10.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.Apache.logging.slf4j.Log4jLoggerFactory]
Exception in thread "main" Java.lang.ClassCastException: Java.base/jdk.internal.loader.ClassLoaders$AppClassLoader cannot be cast to Java.base/Java.net.URLClassLoader
at org.Apache.hadoop.Hive.ql.session.SessionState.<init>(SessionState.Java:394)
at org.Apache.hadoop.Hive.ql.session.SessionState.<init>(SessionState.Java:370)
at org.Apache.hadoop.Hive.cli.CliSessionState.<init>(CliSessionState.Java:60)
at org.Apache.hadoop.Hive.cli.CliDriver.run(CliDriver.Java:708)
at org.Apache.hadoop.Hive.cli.CliDriver.main(CliDriver.Java:686)
at Java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at Java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.Java:62)
at Java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.Java:43)
at Java.base/Java.lang.reflect.Method.invoke(Method.Java:564)
at org.Apache.hadoop.util.RunJar.run(RunJar.Java:234)
at org.Apache.hadoop.util.RunJar.main(RunJar.Java:148)
しかし、私は持っています
- 更新しました $PATH
Java8を指す
$Java -version
Java version "1.8.0_144"
Java(TM) SE Runtime Environment (build 1.8.0_144-b01)
Java HotSpot(TM) 64-Bit Server VM (build 25.144-b01, mixed mode)
Java8を指定するようにHive
実行可能ファイルを更新
vi $(which Hive)
#!/bin/bash
Java_HOME="$(/usr/libexec/Java_home --version 1.8)" Hive_HOME="/usr/local/Cellar/Hive/2.3.1/libexec" exec "/usr/local/Cellar/Hive/2.3.1/libexec/bin/Hive" "$@"
更新されたJavaバージョンがjdk8を指していることを確認しました
$/usr/libexec/Java_home --version 1.8
/Library/Java/JavaVirtualMachines/jdk1.8.0_144.jdk/Contents/Home
ここで他に何を調べる必要がありますか?
これは Hive 2.3.1
on macos
$Hive --version
Hive 2.3.1
Git git://jcamachorodriguez-rMBP.local/Users/jcamachorodriguez/src/workspaces/Hive/HIVE-Apache/Hive -r 7590572d9265e15286628013268b2ce785c6aa08
Compiled by jcamachorodriguez on Thu Oct 19 18:37:58 PDT 2017
From source with checksum 03c91029a6103bd91f25a6ff8a01fbcd
同じ問題があります。環境を変更する代わりにJDK9を削除するだけで、問題は解決します。
ハイブを参照してください、それは使用します
Java_HOME="$(/usr/libexec/Java_home --version 1.7+)"
Hive_HOME="/usr/local/Cellar/Hive/2.3.1/libexec"
exec "/usr/local/Cellar/Hive/2.3.1/libexec/bin/Hive" "$@".
Jdk8をインストールし、それに応じてhadoop-env.shでパスを変更します。これで、うまくいきました。
Hiveのセットアップ中に同じエラーに直面していましたが、最初はJavaバージョンが異なることが原因である可能性があると考えていました。
しかし、Javaバージョンをチェックすると、jdk1.8でした。
最後に、jdkのインストール済みディレクトリ(/ Library/Java/JavaVirtualMachine)を確認したところ、jdk1.8とjdk10の両方が存在することがわかりました。
Jdk 10を削除しましたが、ようやく機能しました。