2016-03-19 12 views
0

Das ist mein build.sbtFunken Verbindung zu cassandra, scheitern op offene Verbindung

name := "cassandra_test" 

version := "1.0" 

scalaVersion := "2.10.6" 

libraryDependencies ++= Seq("com.databricks" %% "spark-avro" % "2.0.1", 
"org.apache.spark" %% "spark-sql" % "1.6.0", 
"org.apache.spark" %% "spark-core" % "1.6.0", 
"com.datastax.spark" %% "spark-cassandra-connector" % "1.5.0") 

und ich habe Cassandra 3.2 (EDIT: jetzt 2.1.12 verwenden) installiert ist, wird der Inhalt des yaml sind, glaube ich , die richtigen sind von dem, was ich gesammelt haben:

rpc_address: 127.0.0.1 (EDIT: now 0.0.0.0) 
rpc_port: 9160 
start_rpc: true 
broadcast_rpc_address: 127.0.0.1 

ich bin in der Lage Sitzungen über cqlsh zu beginnen, erstellen von Tabellen, Abfragen und so.

aber wenn ich versuche, den Funken-Verbindung zu verwenden, habe ich immer:

java.io.IOException: Failed to open native connection to Cassandra at {127.0.0.1}:9160 

diese den Inhalt meines scala Code sind

import com.datastax.spark.connector._ 
import org.apache.spark.sql._ 
import org.apache.spark.SparkContext 
import org.apache.spark.SparkContext._ 
import org.apache.spark.SparkConf 
import org.apache.spark.sql._ 
import com.datastax.spark.connector._ 

object cassandra_test{ 

    def main(args: Array[String]){ 

    val conf = new SparkConf(true).set("spark.cassandra.connection.host", "127.0.0.1").set("spark.cassandra.connection.port", "9160") 
    val sc = new SparkContext("local", "Cassandra Connector Test", conf) 
    val rdd = sc.cassandraTable("test", "kv") 
    println(rdd.count) 
    } 
} 

ich nach Antworten umsah habe, aber ich Ich denke, ich habe alle Möglichkeiten abgedeckt, die ich gesehen habe. Ich habe auch versucht, die localhost IP-Adresse für die tatsächliche IP-Adresse zu ersetzen. Dadurch kann ich mich über cqlsh verbinden, aber nicht über Funken.

Es wurde auch versucht, "127.0.0.1" durch "localhost" zu ersetzen, wenn conf eingerichtet wurde, aber ohne Erfolg.

Der Cassandra-Stecker scheint auch die richtige Version zu sein, laut der github Seite.

Keine weiteren Ideen, was Sie leider versuchen sollten!

Was könnte falsch sein?

============================================= ========

EDIT: Also habe ich das endlich gelöst. Zuerst habe ich den Stecker Bibliothek vor Ort zusammengestellt, so dass ich es als JAR-Datei in Verbindung bringen könnte, und öffnen Sie es mit:

spark-shell --jars /mnt/spark-cassandra-connector/spark-cassandra-connector/target/scala-2.10/spark-cassandra-connector-assembly-1.6.0-M1-12-gc37bb3c.jar --master local 

Notiere die --master local. Das war das wichtige Stück, das fehlte. Dann würde ich auf der Shell ausgeführt:

import org.apache.spark.SparkConf 
import org.apache.spark.SparkContext 
import org.apache.spark.SparkContext._ 
import org.apache.spark.sql 

sc.stop 
import com.datastax.spark.connector._ 
val conf = new SparkConf(true).set("spark.cassandra.connection.host","localhost") 
val rdd = sc.cassandraTable("test", "kv") 
println(rdd.count) 

die immer ohne --master lokalen Teil auf dem Shell-Befehl fehlschlagen würde.

Auf der scala-Code, bedeutet dies, dass die Definition von conf an sich ändernde:

val conf = new SparkConf(true).set("spark.cassandra.connection.host", "localhost").setMaster("local") 

den Trick auch.

Ich noch verstehe nicht wirklich was vor sich geht, wenn jemand sich interessiert, zu erklären, das wäre genial.

+1

Können Sie versuchen mit 'local [*]' anstelle von 'local' master? –

+0

Sie meinten das richtig? 'val sc = new SparkContext (" lokal [*] "," Cassandra Connector Test ", conf)' Leider bekomme ich den gleichen Fehler :( – elelias

+1

Vielleicht versuchen 0.0.0.0 als RPC-Adresse, und starten Sie Cassandra –

Antwort

1

Der einzige Unterschied zwischen Ihrem funktionierenden und nicht funktionierenden Code ist localhost anstelle von 127.0.0.1 für den Schlüssel spark.cassandra.connection.host, dies sollte die Ursache Ihres Problems sein.

Ein etwas nicht verwandter Tipp: Sie können das spark-shell mit der Flagge --packages com.datastax.spark:spark-cassandra-connector:1.6.0-M1 starten, um zu vermeiden, das Glas selbst zu kompilieren.

+0

bist du sicher, weil ich das mehrmals versucht habe und es nie funktioniert hat, bis ich das probiert habe. – elelias

+0

Nun, Sie haben den Master auch im ersten Beispiel eindeutig auf local gesetzt, das kann es nicht sein. –

1

Der Spark Cassandra-Anschluss unterstützt Cassandra 3.2 nicht. Sie sollten eine niedrigere Version verwenden, siehe das Versionskompatibilitätsblatt in der Readme ihrer GitHub repo.

+0

oh ich sehe, ich habe das Diagramm dann falsch gelesen. Ich werde neu installieren und erneut versuchen und Ihre Antwort akzeptieren, danke. – elelias

+0

Ich würde auch die Version 1.5 verwenden des Anschlusses. Nicht sicher, was der Status ist auf 1.6.0-M1 –

+0

Hat alle Änderungen und immer noch kein Glück. Ich benutze Cassandra 2.2 mit Spark 1.6 und dem 1.5-Connector. Sehr frustrierend! – elelias

Verwandte Themen