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.
Können Sie versuchen mit 'local [*]' anstelle von 'local' master? –
Sie meinten das richtig? 'val sc = new SparkContext (" lokal [*] "," Cassandra Connector Test ", conf)' Leider bekomme ich den gleichen Fehler :( – elelias
Vielleicht versuchen 0.0.0.0 als RPC-Adresse, und starten Sie Cassandra –