2016-07-13 10 views
0

Wenn ich einen Befehl wie count oder unique in der Befehlszeile erhalte bekomme ich eine Ausnahme und boote von der Konsole Nicht sicher, wo das gesamte Protokoll zu überprüfen, aber hier ist der AuszugApache-Hive-Ausnahme noClassDefFoundError: scala/collection/iterable

Exception in thread "main" java.lang.NoClassDefFoundError: scala/collection/Iterable 
     at org.apache.hadoop.hive.ql.optimizer.spark.SetSparkReducerParallelism.process(SetSparkReducerParallelism.java:117) 
     at org.apache.hadoop.hive.ql.lib.DefaultRuleDispatcher.dispatch(DefaultRuleDispatcher.java:90) 
     at org.apache.hadoop.hive.ql.lib.DefaultGraphWalker.dispatchAndReturn(DefaultGraphWalker.java:105) 
     at org.apache.hadoop.hive.ql.lib.DefaultGraphWalker.dispatch(DefaultGraphWalker.java:89) 
     at org.apache.hadoop.hive.ql.lib.DefaultGraphWalker.walk(DefaultGraphWalker.java:158) 
     at org.apache.hadoop.hive.ql.lib.DefaultGraphWalker.startWalking(DefaultGraphWalker.java:120) 
     at org.apache.hadoop.hive.ql.parse.spark.SparkCompiler.runJoinOptimizations(SparkCompiler.java:178) 
     at org.apache.hadoop.hive.ql.parse.spark.SparkCompiler.optimizeOperatorPlan(SparkCompiler.java:116) 
     at org.apache.hadoop.hive.ql.parse.TaskCompiler.compile(TaskCompiler.java:134) 
     at org.apache.hadoop.hive.ql.parse.SemanticAnalyzer.analyzeInternal(SemanticAnalyzer.java:10857) 
     at org.apache.hadoop.hive.ql.parse.CalcitePlanner.analyzeInternal(CalcitePlanner.java:239) 
     at org.apache.hadoop.hive.ql.parse.BaseSemanticAnalyzer.analyze(BaseSemanticAnalyzer.java:250) 
     at org.apache.hadoop.hive.ql.Driver.compile(Driver.java:437) 
     at org.apache.hadoop.hive.ql.Driver.compile(Driver.java:329) 
     at org.apache.hadoop.hive.ql.Driver.compileInternal(Driver.java:1158) 
     at org.apache.hadoop.hive.ql.Driver.runInternal(Driver.java:1253) 
     at org.apache.hadoop.hive.ql.Driver.run(Driver.java:1084) 
     at org.apache.hadoop.hive.ql.Driver.run(Driver.java:1072) 
     at org.apache.hadoop.hive.cli.CliDriver.processLocalCmd(CliDriver.java:232) 
     at org.apache.hadoop.hive.cli.CliDriver.processCmd(CliDriver.java:183) 
     at org.apache.hadoop.hive.cli.CliDriver.processLine(CliDriver.java:399) 
     at org.apache.hadoop.hive.cli.CliDriver.executeDriver(CliDriver.java:776) 
     at org.apache.hadoop.hive.cli.CliDriver.run(CliDriver.java:714) 
     at org.apache.hadoop.hive.cli.CliDriver.main(CliDriver.java:641) 
     at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
     at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) 
     at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
     at java.lang.reflect.Method.invoke(Method.java:498) 
     at org.apache.hadoop.util.RunJar.run(RunJar.java:221) 
     at org.apache.hadoop.util.RunJar.main(RunJar.java:136) 
Caused by: java.lang.ClassNotFoundException: scala.collection.Iterable 
     at java.net.URLClassLoader.findClass(URLClassLoader.java:381) 
     at java.lang.ClassLoader.loadClass(ClassLoader.java:424) 
     at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:331) 
     at java.lang.ClassLoader.loadClass(ClassLoader.java:357) 
     ... 30 more 

Antwort

3

dieses Problem in der Regel wegen der classpath Config Problem, versuchen Sie dies kann nützlich

Schritt 1: diesen Code in $ HIVE_HOME finden/bin/hive (vielleicht Backup diese Datei ist besser):

Schritt 2: Fügen Sie Funken lib, wie hive_lib

for f in ${SPARK_HOME}/jars/*.jar; do 
    CLASSPATH=${CLASSPATH}:$f; 
done 

nach diesem, der Stock executeable Datei scheint, wie dieses

for f in ${HIVE_LIB}/*.jar; do 
    CLASSPATH=${CLASSPATH}:$f; 
done 


for f in ${SPARK_HOME}/jars/*.jar; do 
    CLASSPATH=${CLASSPATH}:$f; 
done 

SPARK_HOME die Lage Ihrer Funken installieren zeigen, wie i Funke verwendet 2,0 .0, spark libs ist unter $ {SPARK_HOME}/jars, ich habe einige Antworten von Google gefunden, aber diese lösen meine Frage nicht wirklich, also modifiziere ich die ausführbaren Shellskripte des Hives und füge lib hinzu, funktioniert für mich, möchte dir helfen

+0

Ich habe diese beiden Skripte am Ende der Hive-Datei hinzugefügt, aber die Hive-Tabellenerstellung ist ok, aber wenn ich ausführe, wähle * aus Tabellenname und bekomme denselben Fehler. –