我已将spark 2.0 shell配置为使用datastax cassandra连接器运行。
spark-shell --packages datastax:spark-cassandra-connector:1.5.1-s_2.11
在shell中运行此代码段时
sc.stop
import org.apache.spark
import org.apache.spark._
import org.apache.spark.SparkContext
import org.apache.spark.SparkContext._
import org.apache.spark.SparkConf
import com.datastax.spark
import com.datastax.spark._
import com.datastax.spark.connector
import com.datastax.spark.connector._
import com.datastax.spark.connector.cql
import com.datastax.spark.connector.cql._
import com.datastax.spark.connector.cql.CassandraConnector
import com.datastax.spark.connector.cql.CassandraConnector._
val conf = new SparkConf(true).set("spark.cassandra.connection.host", "dbserver")
val sc = new SparkContext("spark://localhost:7077", "test", conf)
val table = sc.cassandraTable("keyspace", "users")
println(table.count)
println(table.first)
在这一行
scala> val table = sc.cassandraTable("keyspace", "users")
获取此错误
java.lang.NoClassDefFoundError: com/datastax/spark/connector/cql/CassandraConnector$
at com.datastax.spark.connector.SparkContextFunctions.cassandraTable$default$3(SparkContextFunctions.scala:48)
... 62 elided
答案 0 :(得分:3)
正如我已经说过的,一个选择是构建一个包含所有cassandra连接器依赖关系的胖jar。你可以这样做:
$ git clone https://github.com/datastax/spark-cassandra-connector.git
$ cd spark-cassandra-connector
$ sbt assembly
然后只需通过命令行参数将本地jar注入spark shell。
答案 1 :(得分:1)
您可能需要注入更多依赖项或使其版本更新。在我的 java 项目中,我使用了这些:
com.datastax.spark:spark-cassandra-connector_2.10:1.3.0-M2
com.datastax.spark:spark-cassandra-connector-java_2.10:1.3.0-M2
org.apache.spark:spark-core_2.10:1.3.0
org.apache.spark:spark-streaming_2.10:1.3.0
试试并告诉我。
答案 2 :(得分:1)
连接器版本1.5与Spark 2.0不兼容。签出当前主分支或2.0.0-m1的标记。 SBT组装在这个分支上创建的胖罐应该可以工作。我们应该很快就有这个资源的官方火花套餐和maven坐标。