Google Dataproc Spark クラスターを使用して、私の sbt ビルド アセンブリ jar は SparkContext 経由で Cassandra にアクセスできます。
ただし、sqlContext 経由でアクセスしようとすると、リモート クラスタで見つからない spark sql クラスが取得されますが、dataproc クラスタは spark sql 用にプロビジョニングされているはずだと思います。
java.lang.NoClassDefFoundError: org/apache/spark/sql/types/UTF8String$
at org.apache.spark.sql.cassandra.CassandraSQLRow$$anonfun$fromJavaDriverRow$1.apply$mcVI$sp(CassandraSQLRow.scala:50)
at scala.collection.immutable.Range.foreach$mVc$sp(Range.scala
私のsbtファイル:
libraryDependencies ++= Seq(
"org.apache.spark" %% "spark-core" % "1.5.0" % "provided",
"org.apache.spark" %% "spark-sql" % "1.5.0" % "provided",
"com.datastax.spark" %% "spark-cassandra-connector" % "1.4.0"
)
spark-sql で「provided」をオフにすると、jar 重複マージ地獄に陥ります。
助けてくれてありがとう。