У меня возникает эта ошибка, когда я пытаюсь подключиться к кассандре с помощью spark-cassandra-connector:
Исключение в потоке «main» java.lang.NoClassDefFoundError: com / datastax / driver / core / ProtocolOptions $ Compression at com.datastax.spark.connector.cql.CassandraConnectorConf $. (CassandraConnectorConf.scala: 112) at com.datastax.spark .connector.cql.CassandraConnectorConf $. (CassandraConnectorConf.scala) в com.datastax.spark.connector.cql.CassandraConnector $ .apply (CassandraConnector.scala: 192) в com.datastax.spark.connector.SparkContextFunctions. $ 3 по умолчанию. (SparkContextFunctions.scala: 48) в main.scala.TestSpark $ .main (TestSpark.scala: 19) в main.scala.TestSpark.main (TestSpark.scala) в sun.reflect.NativeMethodAccessorImpl.invoke0 (Native Method) в sun .reflect.NativeMethodAccessorImpl.invoke (NativeMethodAccessorImpl.java:57) на sun.reflect.DelegatingMethodAccessorImpl.invoke (DelegatingMethodAccessorImpl.java:43) на java.lang.reflect.Method.java:43 spark.deploy.SparkSubmit $ .org $ apache $ s park $ deploy $ SparkSubmit $$ runMain (SparkSubmit.scala: 672) в org.apache.spark.deploy.SparkSubmit $ .doRunMain $ 1 (SparkSubmit.scala: 180) в org.apache.spark.deploy.SparkSubmit $ .submit ( SparkSubmit.scala: 205) в org.apache.spark.deploy.SparkSubmit $ .main (SparkSubmit.scala: 120) в org.apache.spark.deploy.SparkSubmit.main (SparkSubmit.scala) Вызвано: java.lang. ClassNotFoundException: com.datastax.driver.core.ProtocolOptions $ Сжатие в java.net.URLClassLoader $ 1.run (URLClassLoader.java:366) в java.net.URLClassLoader $ 1.run (URLClassLoader.java:355) в java.security. AccessController.doPrivileged (собственный метод) в java.net.URLClassLoader.findClass (URLClassLoader.java:354) в java.lang.ClassLoader.loadClass (ClassLoader.java:425) в sun.misc.Launcher $ AppClassLoaderun.loadClass ( java: 308) в java.lang.ClassLoader.loadClass (ClassLoader.java:358) ... еще 15 Я добавил банку в путь класса искры spark-cassandra- connector_2.11-1.5.0-M2.jar
Я добавил зависимости в файл sbt:
name := "Simple Project"
version := "1.0"
scalaVersion := "2.11.7"
libraryDependencies += "org.apache.spark" %% "spark-core" % "1.5.1"
libraryDependencies += "org.apache.spark" %% "spark-sql" % "1.5.1"
libraryDependencies += "com.datastax.spark" %% "spark-cassandra-connector" % "1.5.0-M2"
libraryDependencies += "com.datastax.spark" %% "spark-cassandra-connector-java" % "1.5.0-M2"
Это программа Scala, которую я пытаюсь выполнить:
package main.scala
import org.apache.spark.SparkContext
import org.apache.spark.SparkContext._
import org.apache.spark.SparkConf
import com.datastax.spark.connector._
/**
* Created by Simo on 01.12.15.
*/
object TestSpark {
def main(args: Array[String]) {
val conf = new SparkConf(true)
.set("spark.cassandra.connection.host", "54.229.218.236")
.setAppName("Simple Application")
val sc= new SparkContext("local", "test", conf)
val rdd = sc.cassandraTable("test", "kv")
println(rdd.count)
println(rdd.first)
println(rdd.map(_.getInt("value")).sum)
}
}
И вот как я его запускаю:
$ sbt package
$ $SPARK_HOME/bin/spark-submit --class "main.scala.TestSpark" target/scala-2.11/simple-project_2.11-1.0.jar
Вы можете помочь мне понять, что я делаю не так?
Спасибо!
Изменить:
Я попытался добавить драйвер Datastax в список зависимостей и в путь к классам Spark:
libraryDependencies += "com.datastax.cassandra" % "cassandra-driver-core" % "2.1.9"
libraryDependencies += "com.datastax.cassandra" % "cassandra-driver-mapping" % "2.1.9"
Последняя ошибка больше не появляется, но теперь у меня другая ошибка:
Изменить 2: сделать scala 2.10.6 во время компиляции (так же, как и scala-версия искры) Предыдущая ошибка больше не появляется, но у меня есть эта новая ошибка:
Наконец решено с помощью sbt-assembly, как это было предложено @Odomontois
Это финальный build.sbt: