Spark 2.0 Cassandra Scala Shell Error: NoClassDefFoundError
Spark 2.0 Cassandra Scala Shell Error: NoClassDefFoundError
我已将 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(SparkContextFunctions.scala:48)
... 62 elided
您可能需要注入更多依赖项或提高其版本。在我的 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
试试看然后告诉我。
正如我已经说过的,一种选择是构建一个包含所有 cassandra 连接器依赖项的 fat jar。你可以这样做:
$ git clone https://github.com/datastax/spark-cassandra-connector.git
$ cd spark-cassandra-connector
$ sbt assembly
然后只需通过命令行参数将本地 jar 注入 spark shell。
连接器版本 1.5 与 Spark 2.0 不兼容。检查当前的 master 分支或 2.0.0-m1 的标签。 SBT 程序集在此分支上创建的 fat jar 应该可以工作。我们应该很快就会有这个资源的官方 spark 包和 maven 坐标。
我已将 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(SparkContextFunctions.scala:48)
... 62 elided
您可能需要注入更多依赖项或提高其版本。在我的 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
试试看然后告诉我。
正如我已经说过的,一种选择是构建一个包含所有 cassandra 连接器依赖项的 fat jar。你可以这样做:
$ git clone https://github.com/datastax/spark-cassandra-connector.git
$ cd spark-cassandra-connector
$ sbt assembly
然后只需通过命令行参数将本地 jar 注入 spark shell。
连接器版本 1.5 与 Spark 2.0 不兼容。检查当前的 master 分支或 2.0.0-m1 的标签。 SBT 程序集在此分支上创建的 fat jar 应该可以工作。我们应该很快就会有这个资源的官方 spark 包和 maven 坐标。