我想用火花卡桑德拉連接器如下執行的火花項目連接到卡桑德拉:未能使用火花卡桑德拉連接器
版本:
- 卡桑德拉:2.1。 2
- CassandraDriver:2.1.3
- 火花:1.1.0
build.sbt
name := "sparktest"
version := "1.0"
scalaVersion := "2.10.4"
libraryDependencies += "com.datastax.spark" %% "spark-cassandra-connector" % "1.1.0" withSources() withJavadoc()
sparkCassandra.scala
import com.datastax.spark.connector._
import org.apache.spark._
object SparkTest {
def main(args: Array[String]){
val conf = new SparkConf(true).set("spark.cassandra.connection.host", "127.0.0.1")
val sc = new SparkContext("spark://master:7077", "test", conf)
val rdd = sc.cassandraTable("mykeyspace", "users")
println(rdd.count)
}
}
但是當我通過
spark-submit --class "SparkTest" target/scala-2.10/sparktest_2.10-1.0.jar
實施這個項目它發生錯誤
Exception in thread "main" java.io.IOException: Failed to open thrift connection to Cassandra at 127.0.0.1:9160
at com.datastax.spark.connector.cql.CassandraConnector.createThriftClient(CassandraConnector.scala:132)
at com.datastax.spark.connector.cql.CassandraConnector.createThriftClient(CassandraConnector.scala:138)
at com.datastax.spark.connector.cql.CassandraConnector.withCassandraClientDo(CassandraConnector.scala:144)
at com.datastax.spark.connector.rdd.partitioner.CassandraRDDPartitioner.partitions(CassandraRDDPartitioner.scala:158)
at com.datastax.spark.connector.rdd.CassandraRDD.getPartitions(CassandraRDD.scala:294)
at org.apache.spark.rdd.RDD$$anonfun$partitions$2.apply(RDD.scala:204)
at org.apache.spark.rdd.RDD$$anonfun$partitions$2.apply(RDD.scala:202)
at scala.Option.getOrElse(Option.scala:120)
at org.apache.spark.rdd.RDD.partitions(RDD.scala:202)
at org.apache.spark.SparkContext.runJob(SparkContext.scala:1135)
at org.apache.spark.rdd.RDD.count(RDD.scala:904)
at SparkTest$.main(sparkcassandra.scala:14)
at SparkTest.main(sparkcassandra.scala)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:606)
at org.apache.spark.deploy.SparkSubmit$.launch(SparkSubmit.scala:328)
at org.apache.spark.deploy.SparkSubmit$.main(SparkSubmit.scala:75)
at org.apache.spark.deploy.SparkSubmit.main(SparkSubmit.scala)
Caused by: java.lang.NoSuchMethodError: org.apache.cassandra.thrift.TFramedTransportFactory.openTransport(Ljava/lang/String;I)Lorg/apache/thrift/transport/TTransport;
at com.datastax.spark.connector.cql.DefaultConnectionFactory$.createThriftClient(CassandraConnectionFactory.scala:47)
at com.datastax.spark.connector.cql.CassandraConnector.createThriftClient(CassandraConnector.scala:127)
... 19 more
我發現如果我輸入錯誤的表名,它會說「表未找到」 看來連接成功了。
但是,當我使用cassandra表rdd時會導致上述錯誤。 我不明白這個錯誤的原因,如果有人可以幫助我?非常感謝!
只要試一下'telnet 127.0.0.1 9160' - >你有連接嗎? – maasg 2014-12-04 11:55:34
它表示: 「試圖127.0.0.1 ... 連接到127.0.0.1 轉義字符是 '^]' 。」 – 2014-12-05 01:33:17
如果start_rpc:在YAML文件false,那麼它是真的 – 2015-11-17 05:00:42