Scala Spark&x2B;Cassandra连接器因LocalNodeFirstLoadBalancingPolicy.close()失败

Scala Spark&x2B;Cassandra连接器因LocalNodeFirstLoadBalancingPolicy.close()失败,scala,apache-spark,spark-cassandra-connector,Scala,Apache Spark,Spark Cassandra Connector,我一直在尝试将卡桑德拉与scala的Spark联系起来,但我一直面临着几个问题。 以下是使用的版本: Spark 1.5.0 Cassandra 2.1.9 Scala 2.11.1 以下是我遵循的步骤: -下载了带有默认配置的Cassandra,我通过bin/Cassandra-f启动了它。卡桑德拉开局不错,在127.0.0.1上聆听 -我在spark键空间的try表中添加了一些模拟数据。 -下载Spark并通过sbin/start-master.sh启动主机。我可以

我一直在尝试将卡桑德拉与scala的Spark联系起来,但我一直面临着几个问题。 以下是使用的版本:

    Spark 1.5.0
    Cassandra 2.1.9
    Scala 2.11.1
以下是我遵循的步骤: -下载了带有默认配置的Cassandra,我通过bin/Cassandra-f启动了它。卡桑德拉开局不错,在127.0.0.1上聆听 -我在spark键空间的try表中添加了一些模拟数据。 -下载Spark并通过sbin/start-master.sh启动主机。我可以在localhost:8888上看到master运行良好 -我编写了以下build.sbt:

val sparkVersion = "1.5.0"

libraryDependencies ++= Seq(
  jdbc,
  anorm,
  cache,
  ws,
  "org.scalatest" % "scalatest_2.11" % "3.0.0-M8",
  "com.typesafe" % "scalalogging-slf4j_2.10" % "1.1.0",
  "com.typesafe.scala-logging" %% "scala-logging" % "3.1.0",
  "org.apache.spark" % "spark-core_2.11" % sparkVersion,
  "org.apache.spark" % "spark-streaming_2.11" % sparkVersion,
  "org.apache.spark" % "spark-streaming-twitter_2.11" % sparkVersion,
  "org.apache.spark" %% "spark-streaming-kafka" % sparkVersion,
  "org.apache.spark" % "spark-sql_2.11" % sparkVersion,
  "com.datastax.cassandra" % "cassandra-driver-core" % "3.0.0-alpha2",
  "com.datastax.spark" %% "spark-cassandra-connector" % "1.5.0-M1",
  "org.scalatest" %% "scalatest" % "2.2.1" % "test",
  "org.mockito" % "mockito-all" % "1.9.5" % "test"
)
  • 我写了以下主要内容:

    val conf = new SparkConf(true)
    .setAppName("Test")
    .setMaster("spark://127.0.0.1:7077")
    .set("spark.cassandra.connection.host","127.0.0.1")
    .set("spark.cassandra.connection.port", "9042")
    .set("spark.driver.allowMultipleContexts", "true")
    
    /** Connect to the Spark cluster: */
    lazy val sc = new SparkContext(conf)
    
    val rdd = sc.cassandraTable("spark", "try")
    val file_collect=rdd.collect()
    file_collect.map(println(_))
    
    sc.stop()
    
  • 然后我运行程序

这是我用“spark.cassandra.connector.host”得到的堆栈跟踪spark://127.0.0.1:7077“

如果我将此参数更改为local[*],则会得到以下堆栈跟踪:

play.api.Application$$anon$1: Execution exception[[RuntimeException: java.lang.AbstractMethodError: com.datastax.spark.connector.cql.LocalNodeFirstLoadBalancingPolicy.close()V]]
    at play.api.Application$class.handleError(Application.scala:296) ~[play_2.11-2.3.8.jar:2.3.8]
    at play.api.DefaultApplication.handleError(Application.scala:402) [play_2.11-2.3.8.jar:2.3.8]
    at play.core.server.netty.PlayDefaultUpstreamHandler$$anonfun$3$$anonfun$applyOrElse$4.apply(PlayDefaultUpstreamHandler.scala:320) [play_2.11-2.3.8.jar:2.3.8]
    at play.core.server.netty.PlayDefaultUpstreamHandler$$anonfun$3$$anonfun$applyOrElse$4.apply(PlayDefaultUpstreamHandler.scala:320) [play_2.11-2.3.8.jar:2.3.8]
    at scala.Option.map(Option.scala:146) [scala-library-2.11.7.jar:na]
Caused by: java.lang.RuntimeException: java.lang.AbstractMethodError: com.datastax.spark.connector.cql.LocalNodeFirstLoadBalancingPolicy.close()V
    at play.api.mvc.ActionBuilder$$anon$1.apply(Action.scala:523) ~[play_2.11-2.3.8.jar:2.3.8]
    at play.api.mvc.Action$$anonfun$apply$1$$anonfun$apply$4$$anonfun$apply$5.apply(Action.scala:130) ~[play_2.11-2.3.8.jar:2.3.8]
    at play.api.mvc.Action$$anonfun$apply$1$$anonfun$apply$4$$anonfun$apply$5.apply(Action.scala:130) ~[play_2.11-2.3.8.jar:2.3.8]
    at play.utils.Threads$.withContextClassLoader(Threads.scala:21) ~[play_2.11-2.3.8.jar:2.3.8]
    at play.api.mvc.Action$$anonfun$apply$1$$anonfun$apply$4.apply(Action.scala:129) ~[play_2.11-2.3.8.jar:2.3.8]
Caused by: java.lang.AbstractMethodError: com.datastax.spark.connector.cql.LocalNodeFirstLoadBalancingPolicy.close()V
    at com.datastax.driver.core.Cluster$Manager.close(Cluster.java:1423) ~[cassandra-driver-core-3.0.0-alpha2.jar:na]
    at com.datastax.driver.core.Cluster$Manager.access$200(Cluster.java:1171) ~[cassandra-driver-core-3.0.0-alpha2.jar:na]
    at com.datastax.driver.core.Cluster.closeAsync(Cluster.java:462) ~[cassandra-driver-core-3.0.0-alpha2.jar:na]
    at com.datastax.driver.core.Cluster.close(Cluster.java:473) ~[cassandra-driver-core-3.0.0-alpha2.jar:na]
    at com.datastax.spark.connector.cql.CassandraConnector$.com$datastax$spark$connector$cql$CassandraConnector$$createSession(CassandraConnector.scala:163) ~[spark-cassandra-connector_2.11-1.5.0-M1.jar:1.5.0-M1]
知道问题出在哪里吗

export SPARK_MASTER_IP=master
所以我也有同样的问题。我把“主人”改成了我的ip。所以我解决了这个问题


所以我也有同样的问题。我把“主人”改成了我的ip。所以我解决了这个问题。

Spark Cassandra连接器支持java驱动程序版本2.1。 司机v。2.2此处的支持: 它将包含在spark cassandra连接器1.5.0-M2中,或者您可以自己制作。 我认为,它也将与3.0 java驱动程序一起工作。
另一方面,建议使用与C*相同的java驱动程序,因此对于Cassandra 2.1使用java驱动程序2.1,Spark Cassandra连接器支持java驱动程序版本2.1。 司机v。2.2此处的支持: 它将包含在spark cassandra连接器1.5.0-M2中,或者您可以自己制作。 我认为,它也将与3.0 java驱动程序一起工作。
另一方面,我们建议使用与C*相同的java驱动程序,因此请使用java驱动程序2.1 for Cassandra 2.1

非常感谢您的回答。在我的spark conf/spark-env.sh中,我添加了导出spark\u MASTER\u IP=myip\u地址,但它不起作用。我应该在代码中这样设置mster:.setMaster(“spark://127.0.0.1:7077谢谢你的回答。在我的spark conf/spark-env.sh中,我添加了导出spark\u MASTER\u IP=myip\u地址,但它不起作用。我应该在代码中这样设置mster:.setMaster(“spark://127.0.0.1:7077") ?
export SPARK_MASTER_IP=master