为什么Spark Cassandra Connector会因NoHostAvailableException而失败?

时间:2014-09-19 21:51:09

标签: scala cassandra apache-spark

我在使用Scala中的Spark Cassandra Connector时遇到了问题。

我使用这些版本:

  • Scala 2.10.4
  • spark-core 1.0.2
  • cassandra-thrift 2.1.0(我安装的cassandra是v2.1.0)
  • cassandra-clientutil 2.1.0
  • cassandra-driver-core 2.0.4(推荐用于连接器?)
  • spark-cassandra-connector 1.0.0

我可以连接并与Cassandra交谈(没有火花)我可以和Spark(没有Cassandra)交谈,但连接器给了我:

  

com.datastax.driver.core.exceptions.NoHostAvailableException:所有尝试查询的主机都失败了(尝试:/10.0.0.194:9042(com.datastax.driver.core.TransportException:[/ 10.0.0.194: 9042]无法连接))

我错过了什么? Cassandra是默认安装(根据cassandra.yaml,cql的端口9042)。我试图在本地连接("本地")。

我的代码:

val conf = new SparkConf().setAppName("Simple Application").setMaster("local")
val sc = new SparkContext("local","test",conf)
val rdd = sc.cassandraTable("myks","users")
val rr = rdd.first
println(s"Result: $rr")

1 个答案:

答案 0 :(得分:4)

此上下文中的Local指定Spark master(告诉它以本地模式运行)而不是Cassandra连接主机。

要设置Cassandra Connection主机,您必须在Spark Config中设置不同的属性

import org.apache.spark._

val conf = new SparkConf(true)
        .set("spark.cassandra.connection.host", "IP Cassandra Is Listening On")
        .set("spark.cassandra.username", "cassandra") //Optional            
        .set("spark.cassandra.password", "cassandra") //Optional

val sc = new SparkContext("spark://Spark Master IP:7077", "test", conf)

https://github.com/datastax/spark-cassandra-connector/blob/master/doc/1_connecting.md