Ich versuche, den DataStax-Spark-Cassandra-Anschluss funktionsfähig zu machen. Ich habe ein neues SBT-Projekt in IntelliJ erstellt und eine einzelne Klasse hinzugefügt. Die Klasse und meine sbt-Datei ist unten angegeben. Das Erstellen von Funke-Kontexten scheint zu funktionieren, aber in dem Moment, in dem ich die Zeile austausche, in der ich versuche, eine CassandraTable zu erstellen, erhalte ich den folgenden Kompilierungsfehler:Kompilierungsfehler mit Spark Cassandra-Anschluss und SBT
Fehler: scalac: schlechte symbolische Referenz. Eine Signatur in CassandraRow.class bezieht sich auf den Ausdruck Katalysator im Paket org.apache.spark.sql, das nicht verfügbar ist. Möglicherweise fehlt es vollständig im aktuellen Klassenpfad oder in der Version . Der Klassenpfad ist möglicherweise nicht mit der Version kompatibel, die beim Kompilieren von CassandraRow.class verwendet wird.
Sbt ist irgendwie neu für mich, und ich würde jede mögliche Hilfe verstehen, um zu verstehen, was dieser Fehler bedeutet (und natürlich, wie man es löst).
name := "cassySpark1"
version := "1.0"
scalaVersion := "2.10.4"
libraryDependencies += "org.apache.spark" % "spark-core_2.10" % "1.1.0"
libraryDependencies += "com.datastax.spark" % "spark-cassandra-connector" % "1.1.0" withSources() withJavadoc()
libraryDependencies += "com.datastax.spark" %% "spark-cassandra-connector-java" % "1.1.0-alpha2" withSources() withJavadoc()
resolvers += "Akka Repository" at "http://repo.akka.io/releases/"
Und meine Klasse:
import org.apache.spark.{SparkConf, SparkContext}
import com.datastax.spark.connector._
object HelloWorld { def main(args:Array[String]): Unit ={ System.setProperty("spark.cassandra.query.retry.count", "1")
val conf = new SparkConf(true) .set("spark.cassandra.connection.host", "cassandra-hostname") .set("spark.cassandra.username", "cassandra") .set("spark.cassandra.password", "cassandra") val sc = new SparkContext("local", "testingCassy", conf)
> //val foo = sc.cassandraTable("keyspace name", "table name")
val rdd = sc.parallelize(1 to 100) val sum = rdd.reduce(_+_) println(sum) } }
yup ... das war es. scheint, dass die Dokumente ein bisschen veraltet sind. Vielen Dank. – ashic