2016-03-19 4 views
0

Это мой 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") 

сделал трюк тоже.

Я все еще Не понимаю Что происходит, если кто-то хочет объяснить, это было бы замечательно.

+1

Вы можете попробовать с 'local [*]' вместо 'local' master? –

+0

Вы имели в виду это право? 'val sc = new SparkContext (« local [*] »,« Cassandra Connector Test », conf)« К сожалению, я получаю ту же ошибку :( – elelias

+1

Возможно, попробуйте 0.0.0.0 в качестве адреса RPC и перезапустите Cassandra –

ответ

1

Единственная разница между вашим рабочим и нерабочим кодом заключается в использовании localhost вместо 127.0.0.1 для ключа spark.cassandra.connection.host, это должно быть основной причиной вашей проблемы.

Несколько несвязанный совет: вы можете запустить spark-shell с флагом --packages com.datastax.spark:spark-cassandra-connector:1.6.0-M1, чтобы избежать компиляции банку самостоятельно.

+0

вы уверены, потому что я несколько раз пробовал это, и он никогда не работал, пока я не попробовал это. – elelias

+0

Ну, вы явно задали хозяина локально в первом примере тоже, так что этого не может быть. –

1

Разъем Spark Cassandra не поддерживает Cassandra 3.2. Вы должны использовать более низкую версию, см. Таблицу совместимости версий в readme своих GitHub repo.

+0

О, я вижу, я неправильно прочитал этот график. Я переустановить и повторить попытку через некоторое время и принять ваш ответ, спасибо. – elelias

+0

Я бы также использовал версию 1.5 разъема. Не уверен, что такое статус на 1.6.0-M1 –

+0

Сделал все изменения и до сих пор не повезло. Я использую Cassandra 2.2 с Spark 1.6 и 1.5. Очень расстраивает! – elelias

Смежные вопросы