我目前正尝试使用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的本机连接。
# ./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
import com.datastax.spark.connector._
import org.apache.spark.sql.cassandra._
val rdd = sc.cassandraTable("market", "markethistory")
println(rdd.first)
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
谢谢。
答案 0 :(得分:1)
答案是双重的;
cassandra.connection
而不是cassandra-connection
--conf
必须在--packages
之后感谢@ user8371915提供的连接字符串差异。