私はスパークからカサンドラにリード/ライトをしようとし、これらの依存関係を使用しています:Cassandraの読み込みデータセットがNullPointerExceptionで失敗するのはなぜですか?
"com.datastax.spark" % "spark-cassandra-connector-unshaded_2.11" % "2.0.0-M3",
"com.datastax.cassandra" % "cassandra-driver-core" % "3.0.0"
そして、これはコードです:
import com.datastax.spark.connector._
val sparkConf: SparkConf = new SparkConf().setAppName(appName)
.set("spark.cassandra.connection.host", hostname)
.set("spark.cassandra.auth.username",user)
.set("spark.cassandra.auth.password",password)
val spark = SparkSession.builder().config(sparkConf).getOrCreate()
val df = spark
.read
.format("org.apache.spark.sql.cassandra")
.options(Map("table" -> s"$TABLE", "keyspace" -> s"$KEYSPACE"))
.load() // This Dataset will use a spark.cassandra.input.size of 128
は、しかし、提出スパークしようとしている上で、私はこれを取得しています
Exception in thread "main" java.lang.NullPointerException
at com.datastax.driver.core.Cluster$Manager.close(Cluster.java:1516)
at com.datastax.driver.core.Cluster$Manager.access$200(Cluster.java:1237)
at com.datastax.driver.core.Cluster.closeAsync(Cluster.java:540)
at com.datastax.driver.core.Cluster.close(Cluster.java:551)
at com.datastax.spark.connector.cql.CassandraConnector$.com$datastax$spark$connector$cql$CassandraConnector$$createSession(CassandraConnector.scala:162)
at com.datastax.spark.connector.cql.CassandraConnector$$anonfun$3.apply(CassandraConnector.scala:149)
at com.datastax.spark.connector.cql.CassandraConnector$$anonfun$3.apply(CassandraConnector.scala:149)
at com.datastax.spark.connector.cql.RefCountedCache.createNewValueAndKeys(RefCountedCache.scala:31)
at com.datastax.spark.connector.cql.RefCountedCache.acquire(RefCountedCache.scala:56)
at com.datastax.spark.connector.cql.CassandraConnector.openSession(CassandraConnector.scala:82)
at com.datastax.spark.connector.cql.CassandraConnector.withSessionDo(CassandraConnector.scala:110)
at com.datastax.spark.connector.rdd.partitioner.dht.TokenFactory$.forSystemLocalPartitioner(TokenFactory.scala:98)
at org.apache.spark.sql.cassandra.CassandraSourceRelation$.apply(CassandraSourceRelation.scala:255)
at org.apache.spark.sql.cassandra.DefaultSource.createRelation(DefaultSource.scala:55)
at org.apache.spark.sql.execution.datasources.DataSource.resolveRelation(DataSource.scala:345)
at org.apache.spark.sql.DataFrameReader.load(DataFrameReader.scala:149)
at org.apache.spark.sql.DataFrameReader.load(DataFrameReader.scala:122)
説明をありがとう!リンクが助けになりました。私はドライバを削除しました。私は今これを行っています(スパークコア以外): // sbt '' com.datastax.spark '%% "spark-cassandra-connector"% "2.0.2"% " (Map( "table" - > s "$ TABLE"、 "keyspace" - > s ")")を使用すると、 $ KEYSPACE "))。load()' 私のjarはすべての依存関係を持つfat jarです。私はspark-submitをやっています。そして、私は同じNPEをもう一度見ます。 –
SparkBuildExamplesの例では、 "spark-cassandra-connectorには、spark-submitコマンドに '--packages'フラグを指定する必要があります。スパーク提出の場合でもそれを行う必要がありますか?私はそれがスパークシェルのみで行うために必要と考えました。エラーの原因になりますか?はいの場合、私の火花送信はどのように見えるのですか? –
私はSparkBuildExamplesリンクからこの例を取ったので、そのままWriteReadを試しています。元のNPEはなくなりました。これを今すぐ取得しています: 'スレッド内の例外" main/datastax/spark/connector/cql/CassandraConnector; 'どんな提案?上記のようにspark-core、spark-sql、およびCassandra-connector jarを使用しています(ハイブはありません)。 –