首页 文章

无法通过Spark Scala连接到远程Cassandra

提问于
浏览
2

尝试使用 Apache-SparkScala 连接到远程_2544843时,我遇到了一些麻烦 . 我成功地用 MongoDb 以同样的方式连接过去 .

这次我真的不明白为什么我收到以下错误:

无法在{127.0.0.1}:9042打开与Cassandra的本机连接

我想这是一个依赖和版本问题,但我无法在文档和其他问题上找到与此问题相关的任何内容 .

我基本上设法使用jsch通过ssh-tunnel连接到我的服务器,一切正常 . 然后,我成功地使用 SparkConnectionFactory.scala 连接到本地apache-spark:

package connection

import org.apache.spark.{SparkConf, SparkContext}

class SparkConnectionFactory {

  var sparkContext : SparkContext = _

  def initSparkConnection = {
    val configuration = new SparkConf(true).setMaster("local[8]")
                        .setAppName("my_test")
                        .set("spark.cassandra.connection.host", "localhost")
                        .set("spark.cassandra.input.consistency.level","ONE")
                        .set("spark.driver.allowMultipleContexts", "true")
    val sc = new SparkContext(configuration)
    sparkContext = sc
  }

  def getSparkInstance : SparkContext = {
    sparkContext
  }

}

并在我的_2544850中调用它:

val sparkConnectionFactory = new SparkConnectionFactory
sparkConnectionFactory.initSparkConnection
val sc : SparkContext = sparkConnectionFactory.getSparkInstance

但是,当我尝试使用以下方法选择Cassandra表中的所有项目时:

val rdd = sc.cassandraTable("my_keyspace", "my_table")
rdd.foreach(println)

我得到了上面写的错误 .

在我的服务器上,我安装了 Scala ~v2.11.6Spark ~v2.1.1SparkSQL ~v2.1.1 . 当然我有8个核心,复制因子为1.我的 pom.xml 我有:

. . .
<properties>
    <scala.version>2.11.6</scala.version>
</properties>

<dependencies>
    <dependency>
        <groupId>org.scala-lang</groupId>
        <artifactId>scala-library</artifactId>
        <version>${scala.version}</version>
    </dependency>

    . . .

    <!-- https://mvnrepository.com/artifact/org.apache.spark/spark-core_2.10 -->
    <dependency>
        <groupId>org.apache.spark</groupId>
        <artifactId>spark-core_2.11</artifactId>
        <version>2.1.1</version>
    </dependency>

    <!-- https://mvnrepository.com/artifact/com.datastax.spark/spark-cassandra-connector_2.10 -->
    <dependency>
        <groupId>com.datastax.spark</groupId>
        <artifactId>spark-cassandra-connector_2.11</artifactId>
        <version>2.0.3</version>
    </dependency>

    <!-- https://mvnrepository.com/artifact/org.apache.spark/spark-sql_2.10 -->
    <dependency>
        <groupId>org.apache.spark</groupId>
        <artifactId>spark-sql_2.11</artifactId>
        <version>2.1.1</version>
    </dependency>

    <!-- https://mvnrepository.com/artifact/commons-codec/commons-codec -->
    <dependency>
        <groupId>commons-codec</groupId>
        <artifactId>commons-codec</artifactId>
        <version>1.9</version>
    </dependency>

</dependencies>

Is my issue caused by conflicting versions? If yes, how can I fix this? If not, any hint on what's causing it?

提前致谢 .

1 回答

  • 1

    我将端口9042转发到8988

    那就是你需要连接的端口

    .set("spark.cassandra.connection.port", 8988)
    

相关问题