2016-07-29 17 views
0

スパークのハイブを正常に動作させようとしていますが、ハイブ-exec-2.0.1がロードされていないようです.jar。 私はmrでHiveをうまく動作させることができます。 ImはHive 2.0.1とSpark 1.6.1を使用しています。 Hive on Sparkチュートリアルに続きました。 hive-site.xmlに必要なすべてのプロパティを設定し、sparkアセンブリjarをhive libフォルダにリンクしました。私はすでにすべての環境変数(SPARK_HOMEなど)を設定しています。 私はスパークマスターとワーカーを始めました。また、DEBUGレベルでhiveserver2を起動しました。単純なクエリ "select count(*)..."を実行しようとしましたが、ハイブログに表示されている限り、hive-exec-2.0.1.jarを含むすべてのnesscary引数でspark-submitコマンドを実行していますファイルそれでも私は、実行時に、私が取得することを参照してください。スパークでハイブクエリを実行する - 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. 

あなたはどのようにこの問題を解決するための任意のアイデアを持っていますか? 私はすべてを試しました:sp​​ark.jarsプロパティを設定し、hive-exec-2.0.1.jarをリンクし、spark.executor..propertyなどを設定します。

これは問題なく動作するはずですが、何らかの理由で私はそれを働かせることができません...

他に何か?

+0

あなたは '$ SPARK_HOME/conf'ディレクトリに'ハイブ-site.xml'ファイルのコピーを持っていますか? –

+0

yesとHiveContextが正常に起動します –

+0

spark 1.6.1はハイブ1.2.1と互換性があります - ハイブを1.2.1バージョンにダウングレードする必要があります - http://spark.apache.org/docs/1.6.1/sql -programming-guide.html#hive-tables –

答えて

1

これらは私がClouderaのVM上で火花を設定するときhive-site.xml$SPARK_HOME/confにDIRをコピーと一緒にしなければならなかった変更です:

/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 

は、このプロパティを追加します。$SPARK_HOME/conf/classpath.txtファイルに次の行を追加します。

$SPARK_HOME/conf/spark-default.confファイル(ハイブのlibにコピーした同じアセンブリのjar - ハイブのライブラリにアセンブリのjarファイルをコピーする必要はありませんでした):

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

また、classpath.txtファイルに設定されているjarバージョンのハイブを確認するファイルは、あなたのものと同じバージョンであり、場所(絶対パス)も有効です。 spark.driver.extraClassPath点:

0

プロパティを追加することによってそれを解決しハイブ-EXEC-1.2.1.jar

+0

直後に別の問題が発生しました。クエリを実行すると、java.lang.AbstractMethodError例外がスローされました。最終的に互換性のあるバージョンは次のとおりです:Hive-2.0.1を含むSpark-1.6.2またはHive-1.2.1を含むSpark 1.4.1 –

0

以降ハイブ1.2の古い新しいバージョンと互換性のスパークのバージョンを1.3スパークあります。 1。それは私がそれを動作させることができた唯一のものであり、それは生産準備が整っています。これはベンダーのバージョンに基づいて作成されていません。私はHortonworksのトークでこれを紹介しました。 here

HTHから詳細、

ミシガン

+0

外部リソースへのリンクが推奨されますが、リンクの周りにコンテキストを追加して、それが何で、なぜそこにあるのかというアイデア。ターゲットサイトに到達できない場合や、永続的にオフラインになる場合は、常に重要なリンクの最も関連性の高い部分を引用してください。 – pableiros

関連する問題