2016-06-23 9 views
2

RDDにsaveToCassandraを使用してSparkからScalaのCassandraにデータを保存するか、データフレームで保存します(両方とも同じエラーが発生します)。完全なメッセージは次のとおりです。SparkからCassandraにデータを保存すると、java.lang.ClassCastExceptionが発生します。

とjava.lang.ClassCastException: com.datastax.driver.core.DefaultResultSetFutureは com.google.common.util.concurrent.ListenableFuture

Iにキャストすることはできませんコードhereと一緒に続き、まだエラーが出ているようです。

私はCassandra 3.6、Spark 1.6.1、およびspark-cassandra-connector 1.6を使用しています。デバッグに役立つ情報があれば教えてください。

答えて

1

私は同様の例外を持っていたし、build.sbtのScalaのバージョンに変更した後、それを修正:

scalaVersion := "2.10.6" 

とライブラリの依存関係:

libraryDependencies ++= Seq(
    "com.datastax.spark" %% "spark-cassandra-connector" % "1.6.0", 
    "com.datastax.cassandra" % "cassandra-driver-core" % "3.0.2", 
    "org.apache.spark" %% "spark-core" % "1.6.1" % "provided", 
    "org.apache.spark" %% "spark-sql" % "1.6.1" % "provided" 
) 

をこの構成例では5-minute quick start guideからは正常に動作します。

+0

これは問題の解決に役立ちました。私が抱えていた主な問題の一つは、矛盾したグアバのバージョンです。だから将来誰かがこのエラーに遭遇すれば、私はそれを調べます。私は別のプロジェクトにコードを入れずにそれを解決することはできませんでしたが、これをやっていない方法があると想像しています。 –

+0

@ grzesiekw私も同じ問題を抱えていました。あなたの図書館情報が私を救った。 Thanks – BDR

+0

コネクタ1.6.0は、ブランチソースをチェックするとC *ドライバ3.0.0に依存します。なぜC *ドライバ3.0.2がここに明示的に必要とされているのだろうか。また、Datastaxが3.0.0から3.0.2への変更点を突破するという興味深い決定です。 –