使用Spark使用Datastax驱动程序连接到Cassandra时设置端口和主机名

时间:2018-07-04 21:12:02

标签: apache-spark cassandra

我目前正尝试使用Apache Spark (2.3.0,shell)和Datastax驱动程序(datastax:spark-cassandra-connector:2.3.0-s_2.11)连接到Apache Cassandra数据库。

我在命令行上使用--conf选项,当我尝试运行数据库查询时,它的错误提示是它无法打开与127.0.0.1:9042的本机连接。

步骤1(我正在Spark所在的文件夹中运行此命令。)

  • # ./bin/spark-shell --conf spark.cassandra-connection.host=localhost spark.cassandra-connection.native.port=32771 --packages datastax:spark-cassandra-connector:2.3.0-s_2.11

步骤2(我在Spark的scala> shell中运行这些步骤)

  • scala> import com.datastax.spark.connector._
  • scala> import org.apache.spark.sql.cassandra._
  • scala> val rdd = sc.cassandraTable("market", "markethistory")
  • scala> println(rdd.first)

第3步(出错)

  • java.io.IOException: Failed to open native connection to Cassandra at {127.0.0.1}:9042 + stacktrace

  • Caused by: com.datastax.driver.core.exceptions.NoHostAvailableException: All host(s) tried for query failed (tried: localhost/127.0.0.1:9042 (com.datastax.driver.core.exceptions.TransportException: [localhost/127.0.0.1:9042] Cannot connect)) + stacktrace

附加说明:

请注意在错误中如何显示9042端口。

我还尝试过在--conf选项中更改主机,但这不会更改错误的输出。

我的主要假设是,我需要在scala中指定主机和端口,但是我不确定如何使用,而datastax文档全都涉及其特殊的spark发行版,而且似乎不匹配。

我尝试过的事情:

  • spark.cassandra-connection.port=32771
  • spark.cassandra.connection.port=32771
  • spark.cassandra.connection.host=localhost

谢谢。

1 个答案:

答案 0 :(得分:1)

答案是双重的;

  • 字符串确实是cassandra.connection而不是cassandra-connection
  • --conf必须在--packages之后

感谢@ user8371915提供的连接字符串差异。