2

私はscala 2.11spark 2.0.0(ローカルスタンドアロン)とspark-cassandra-connector 2.0.0-M1を使用しています。私は、IDEのプロジェクトに取り組んでいますし、毎回私は、スパークのコマンドを実行して、私はスパークが原因とClassNotFoundExceptionに失敗します。com.datastax.spark.connector.rdd.partitioner.CassandraPartition(内部の詳細)

ClassNotFoundException: com.datastax.spark.connector.rdd.partitioner.CassandraPartition 
    at java.net.URLClassLoader.findClass(URLClassLoader.java:381) 
    at java.lang.ClassLoader.loadClass(ClassLoader.java:424) 
    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.spark.serializer.JavaDeserializationStream$$anon$1.resolveClass(JavaSerializer.scala:67) 
    at java.io.ObjectInputStream.readNonProxyDesc(ObjectInputStream.java:1620) 
    at java.io.ObjectInputStream.readClassDesc(ObjectInputStream.java:1521) 
    at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1781) 
    at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1353) 
    at java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:2018) 
    at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1942) 
    at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1808) 
    at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1353) 
    at java.io.ObjectInputStream.readObject(ObjectInputStream.java:373) 
    at org.apache.spark.serializer.JavaDeserializationStream.readObject(JavaSerializer.scala:75) 
    at org.apache.spark.serializer.JavaSerializerInstance.deserialize(JavaSerializer.scala:114) 
    at org.apache.spark.executor.Executor$TaskRunner.run(Executor.scala:253) 
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) 
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) 
    at java.lang.Thread.run(Thread.java:745) 

マイbuild.sbtファイル

ibraryDependencies += "com.datastax.spark" %% "spark-cassandra-connector" % "2.0.0-M1" 

libraryDependencies += "org.apache.spark" %% "spark-core" % "2.0.0" 

libraryDependencies += "org.apache.spark" %% "spark-sql" % "2.0.0" 

を取得するので、基本的にそれは

Caused by: org.apache.spark.SparkException: Job aborted due to stage failure: Task 1 in stage 0.0 failed 4 times, most recent failure: Lost task 1.3 in stage 0.0 (TID 13, 192.168.0.12): java.lang.ClassNotFoundException: com.datastax.spark.connector.rdd.partitioner.CassandraPartition 

エラーメッセージです私がspark-cassandra-connectorでスパークシェルを動かすのは、

$ ./spark-shell --jars /home/Applications/spark-2.0.0-bin-hadoop2.7/spark-cassandra-connector-assembly-2.0.0-M1-22-gab4eda2.jar 

私は途中でエラーメッセージなしでsparkとcassandraを扱うことができます。

この奇妙な非互換性をトラブルシューティングする方法についての手掛かりはありますか?

編集:

これは興味深いです、ワーカーノードの観点から、私はプログラムを実行すると、コネクターは、最終的にClassNotFoundは(それが原因で結合しない与えるものだ

`java.io.InvalidClassException: com.datastax.spark.connector.rdd.CassandraTableScanRDD; local class incompatible: stream classdesc serialVersionUID = 1517205208424539072, local class serialVersionUID = 6631934706192455668` 

を与えますの衝突)。しかし、このプロジェクトではspark and connector 2.0scala 2.11しか使われていませんでした。

答えて

2

ライブラリでビルドしたからといってSparkでは、ランタイムクラスパスには含まれません。あなたが追加した場合

--jars /home/Applications/spark-2.0.0-bin-hadoop2.7/spark-cassandra-connector-assembly-2.0.0-M1-22-gab4eda2.jar 

あなたのアプリケーションのspark-submitには、ランタイムとリモートjvmsのすべての必要なライブラリが含まれます。

基本的に、最初の例では、コネクタライブラリは実行時クラスパス上にありません。スパークシェルの例ではありません。

+0

ご回答いただきありがとうございます。私はあなたが何を意味しているのか理解していますが、私はプロジェクトの設定を梳きました(そしてそれらを既存のものと比較しました)。しかし、コネクタだけでは動作しません(スパークだけでうまく動作します)。私はIntelliJを使用しています。私はProject Structure ...-> Module-> Dependenciesをチェックしましたが、両方のjarファイルはコンパイルの対象となっていますが、存在します。しかし、IntelliJのドキュメントから、コンパイルスコープもランタイムをカバーします。問題がどこにあるのかについて何かヒントを感じているのですか? – Mnemosyne

+0

マスターをローカルモードで実行していない限り、上で概説した問題が発生します。アプリケーション(Spark Driver)のクラスパスは正しいものの、エグゼキュータは正しくありません。ローカルモードでマスターを実行すると、すべてが同じJVM内に含まれることになります。これは、ほとんどの人がテストに使用するものです。 – RussS

+0

私のマスターもローカルです。私は外部クラスタと通信していません。 spark-default.confファイルのspark.executor.extraClassPathで構築したjarファイルも追加しましたが、実行時には認識されません。 Spark shell +(同じ)jarコネクタが動作しますが、それは私のシステムにとっては役に立たないものです。私は最初からプロジェクトを作り直そうとしました。コピーしたのはコードそのものだけでした。同じエラー。これはIntelliJと新しいコネクタの間にいくつかのバグでしょうか? – Mnemosyne

関連する問題