Это мой build.sbtискра подключение к Кассандре, не в состоянии Op открытого соединения
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")
и я установил Cassandra 3.2 (EDIT: теперь использует 2.1.12), содержимое YAML, я верю , правильные те из того, что я собрал:
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
Я могу начать занятия через cqlsh
, создание таблиц, запросов и такие.
Однако, когда я пытаюсь использовать свечу соединение, я всегда получаю:
java.io.IOException: Failed to open native connection to Cassandra at {127.0.0.1}:9160
это содержимое моего кода лестницу
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)
}
}
Я огляделась в поисках ответов, но я думаю, что я рассмотрел все возможности, которые я видел. Я также попытался заменить IP-адрес localhost на фактический IP-адрес. Выполняя это, я могу подключиться через cqlsh, но не через искру.
Также попытался заменить "127.0.0.1" на "localhost" при настройке conf
, но безрезультатно.
Коннектор cassandra также подходит для правильной версии, в соответствии с страницей github.
Нет больше идей о том, что к сожалению!
Что может быть неправильным?
=================================================================================================================================================== ========
EDIT: Итак, я, наконец, решил это. Во-первых, я собрал библиотеку соединителя локально, так что я мог бы связать его как файл фляги и открыть его с помощью:
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
Обратите внимание на --master local
. Это была важная часть, которая отсутствовала. Тогда я бы работать на раковине:
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)
Который всегда потерпит неудачу без --master локальной части на команды оболочки.
В коде лестницы, это означает, что изменение определения conf
к:
val conf = new SparkConf(true).set("spark.cassandra.connection.host", "localhost").setMaster("local")
сделал трюк тоже.
Я все еще Не понимаю Что происходит, если кто-то хочет объяснить, это было бы замечательно.
Вы можете попробовать с 'local [*]' вместо 'local' master? –
Вы имели в виду это право? 'val sc = new SparkContext (« local [*] »,« Cassandra Connector Test », conf)« К сожалению, я получаю ту же ошибку :( – elelias
Возможно, попробуйте 0.0.0.0 в качестве адреса RPC и перезапустите Cassandra –