2016-07-29 18 views
0

Ich versuche, Hive auf Spark funktioniert ordnungsgemäß, aber es scheint, als würde es nicht laden die hive-exec-2.0.1 .Krug. Ich kann Hive auf Herrn bekommen, um völlig in Ordnung zu sein. Im mit Hive 2.0.1 und Spark 1.6.1. Gefolgt von dem Hive on Spark-Tutorial. Ich habe alle erforderlichen Eigenschaften auf hive-site.xml gesetzt, das Spark-Assembly-Jar in den Hive-lib-Ordner verlinkt, ich habe bereits alle Umgebungsvariablen gesetzt (SPARK_HOME, usw.). Ich begann den Funken Meister und Arbeiter. Außerdem startete der hiveserver2 mit DEBUG level. Versucht, eine einfache Abfrage auszuführen "Select count (*) ..." und, soweit ich in den Hive-Logs sehe, die Ausführung des Befehls spark-submit mit allen nesscary-Argumenten einschließlich der hive-exec-2.0.1.jar Datei aber immer noch ich sehe, dass bei der Ausführung I erhalten:Ausführen von Hive-Abfrage auf spark - java.lang.NoClassDefFoundError org/apache/hive/spark/client/Job


16/07/29 18:14:51 [RPC-Handler-3]: WARN rpc.RpcDispatcher: Received error message:io.netty.handler.codec.DecoderException: java.lang.NoClassDefFoundError: org/apache/hive/spark/client/Job 
    at io.netty.handler.codec.ByteToMessageDecoder.callDecode(ByteToMessageDecoder.java:358) 
    at io.netty.handler.codec.ByteToMessageDecoder.channelRead(ByteToMessageDecoder.java:230) 
    at io.netty.handler.codec.ByteToMessageCodec.channelRead(ByteToMessageCodec.java:103) 
    at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:308) 
    at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:294) 
    at io.netty.channel.ChannelInboundHandlerAdapter.channelRead(ChannelInboundHandlerAdapter.java:86) 
    at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:308) 
    at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:294) 
    at io.netty.channel.DefaultChannelPipeline.fireChannelRead(DefaultChannelPipeline.java:846) 
    at io.netty.channel.nio.AbstractNioByteChannel$NioByteUnsafe.read(AbstractNioByteChannel.java:131) 
    at io.netty.channel.nio.NioEventLoop.processSelectedKey(NioEventLoop.java:511) 
    at io.netty.channel.nio.NioEventLoop.processSelectedKeysOptimized(NioEventLoop.java:468) 
    at io.netty.channel.nio.NioEventLoop.processSelectedKeys(NioEventLoop.java:382) 
    at io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:354) 
    at io.netty.util.concurrent.SingleThreadEventExecutor$2.run(SingleThreadEventExecutor.java:111) 
    at java.lang.Thread.run(Thread.java:745) 
Caused by: java.lang.NoClassDefFoundError: org/apache/hive/spark/client/Job 
    at java.lang.ClassLoader.defineClass1(Native Method) 
    at java.lang.ClassLoader.defineClass(ClassLoader.java:763) 
    at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142) 
    at java.net.URLClassLoader.defineClass(URLClassLoader.java:467) 
    at java.net.URLClassLoader.access$100(URLClassLoader.java:73) 
    at java.net.URLClassLoader$1.run(URLClassLoader.java:368) 
    at java.net.URLClassLoader$1.run(URLClassLoader.java:362) 
    at java.security.AccessController.doPrivileged(Native Method) 
    at java.net.URLClassLoader.findClass(URLClassLoader.java:361) 
    at java.lang.ClassLoader.loadClass(ClassLoader.java:424) 
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:331) 
    at java.lang.ClassLoader.loadClass(ClassLoader.java:411) 
    at java.lang.ClassLoader.loadClass(ClassLoader.java:357) 
    at java.lang.Class.forName0(Native Method) 
    at java.lang.Class.forName(Class.java:348) 
    at org.apache.hive.com.esotericsoftware.kryo.util.DefaultClassResolver.readName(DefaultClassResolver.java:154) 
    at org.apache.hive.com.esotericsoftware.kryo.util.DefaultClassResolver.readClass(DefaultClassResolver.java:133) 
    at org.apache.hive.com.esotericsoftware.kryo.Kryo.readClass(Kryo.java:670) 
    at org.apache.hive.com.esotericsoftware.kryo.serializers.ObjectField.read(ObjectField.java:118) 
    at org.apache.hive.com.esotericsoftware.kryo.serializers.FieldSerializer.read(FieldSerializer.java:551) 
    at org.apache.hive.com.esotericsoftware.kryo.Kryo.readClassAndObject(Kryo.java:790) 
    at org.apache.hive.spark.client.rpc.KryoMessageCodec.decode(KryoMessageCodec.java:97) 
    at io.netty.handler.codec.ByteToMessageCodec$1.decode(ByteToMessageCodec.java:42) 
    at io.netty.handler.codec.ByteToMessageDecoder.callDecode(ByteToMessageDecoder.java:327) 
    ... 15 more 
Caused by: java.lang.ClassNotFoundException: org.apache.hive.spark.client.Job 
    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) 
    ... 39 more 
. 
16/07/29 18:14:51 [RPC-Handler-3]: WARN client.SparkClientImpl: Client RPC channel closed unexpectedly. 

haben Sie eine Ahnung, wie dieses Problem zu lösen? Ich habe alles versucht: Setzen Sie die Eigenschaft spark.jars, verknüpfen Sie die hive-exec-2.0.1.jar, setzen Sie die spark.executor.property, etc.

Es scheint wie es sollte ohne Probleme funktionieren, aber Aus irgendeinem Grund kann ich es nicht zur Arbeit bringen ...

Sonst noch etwas?

+0

Haben Sie Kopie von 'hive-site.xml' Datei in' $ SPARK_HOME/conf' dir haben? –

+0

ja und der HiveContext initiiert erfolgreich –

+0

Sieht aus wie Spark 1.6.1 ist kompatibel mit Hive 1.2.1 - Sie sollten versuchen, Hive auf Version 1.2.1 herabstufen - http://spark.apache.org/docs/1.6.1/sql -programming-guide.html # hive-tables –

Antwort

1

Dies sind die Änderungen, die ich hatte mit dem Kopieren hive-site.xml zu $SPARK_HOME/conf dir machen mit, wenn ich Funke auf cloudera VM einzurichten:

Fügen Sie diese Zeilen in $SPARK_HOME/conf/classpath.txt Datei:

/home/cloudera/spark-1.2.1-bin-hadoop2.4/lib/spark-1.2.1-yarn-shuffle.jar 
/usr/jars/hive-exec-1.2.1.jar 

diese Eigenschaft hinzufügen in $SPARK_HOME/conf/spark-default.conf Datei (gleiche Montage Glas, die Sie kopiert haben lib hive - ich brauchte nicht Versammlung jar zu kopieren lib liedern.):

spark.yarn.jar=local:/home/cloudera/spark-1.2.1-bin-hadoop2.4/lib/spark-assembly-1.2.1-hadoop2.4.0.jar 

Überprüfen Sie auch die JAR-Version der Hive-Gruppe, die in der Datei classpath.txt festgelegt ist. Die Dateien entsprechen der gleichen Version, und auch die Position (absoluter Pfad) ist gültig.

0

löste es durch die Eigenschaft hinzufügen: spark.driver.extraClassPath und verweist auf: Bienenstock-exec-1.2.1.jar

+0

Gleich danach hatte ich ein anderes Problem: Durch das Ausführen der Abfrage wurde eine java.lang.AbstractMethodError-Ausnahme ausgelöst. Schließlich sind die kompatiblen Versionen: Spark-1.6.2 mit Hive-2.0.1 oder Spark 1.4.1 mit Hive-1.2.1 –

0

Die Version von Spark-kompatibel mit alter neuerer Version von Hive 1.2 ab 1,3 Funken. 1. Das ist die einzige, die ich geschafft habe, und es ist produktionsreif. Dies basiert nicht auf der Version eines Herstellers. Ich habe dies in Hortonworks Talk vorgestellt. Details von here

HTH,

Ich

+0

Links zu externen Ressourcen werden empfohlen, aber bitte fügen Sie Kontext um den Link hinzu, so dass Ihre Mitbenutzer einige haben Idee was es ist und warum es da ist. Zitiere immer den relevantesten Teil eines wichtigen Links, falls die Zielseite nicht erreichbar ist oder permanent offline geschaltet wird. – pableiros