【问题标题】:Spark 2.0 Cassandra Scala Shell Error: NoClassDefFoundErrorSpark 2.0 Cassandra Scala Shell 错误:NoClassDefFoundError
【发布时间】:2016-08-17 22:58:06
【问题描述】:

我已将 spark 2.0 shell 配置为使用 datastax cassandra 连接器运行。

spark-shell --packages datastax:spark-cassandra-connector:1.5.1-s_2.11

在 shell 中运行这个 sn-p 时

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

【问题讨论】:

  • 我认为您的方法的问题是,cassandra 连接器在类路径上找不到某些类。您可以制作一个胖 jar(例如使用 cassandra 连接器运行“sbt 程序集”),然后在 Spark shell 中使用这个本地 jar。

标签: apache-spark cassandra spark-cassandra-connector


【解决方案1】:

正如我已经说过的,一种选择是构建一个包含所有 cassandra 连接器依赖项的胖 jar。你可以这样做:

$ git clone https://github.com/datastax/spark-cassandra-connector.git
$ cd spark-cassandra-connector
$ sbt assembly

然后只需通过命令行参数将本地 jar 注入到 spark shell 中。

【讨论】:

    【解决方案2】:

    您可能需要注入更多的依赖项或提高其版本。在我的 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
    

    试试看,然后告诉我。

    【讨论】:

      【解决方案3】:

      连接器版本 1.5 与 Spark 2.0 不兼容。签出当前的 master 分支或 2.0.0-m1 的标签。在这个分支上由 SBT 程序集创建的 fat jar 应该可以工作。我们应该很快就会有这个资源的官方 spark 包和 maven 坐标。

      【讨论】:

        猜你喜欢
        • 2017-01-01
        • 2017-12-20
        • 2018-08-20
        • 2017-04-20
        • 2020-08-23
        • 2017-03-28
        • 2017-01-17
        • 2016-12-22
        • 2017-11-18
        相关资源
        最近更新 更多