无法将Spark连接到RStudio中的Cassandra DB

时间:2017-01-26 16:09:23

标签: r apache-spark cassandra rstudio sparklyr

我花了最后一周的时间试图弄清楚如何使用sparlyr获得连接我们本地群集上的cassandra的火花,而且我已经碰壁了 - 任何帮助都会非常感激。我是唯一一个尝试使用R / Rstudio进行此连接的人(其他人都在NetBeans和Maven上使用Java),并且我不确定我需要做些什么才能使其工作。

我正在使用的堆栈是: Ubuntu 16.04(在VM中) 闪光:0.5.3 Spark:2.0.0 斯卡拉:2.11 卡珊德拉:3.7

相关的config.yml文件设置:

# cassandra settings
spark.cassandra.connection.host: <cluster_address>
spark.cassandra.auth.username: <user_name>
spark.cassandra.auth.password: <password>

sparklyr.defaultPackages:
- com.databricks:spark-csv_2.11:1.3.0
- com.datastax.spark:spark-cassandra-connector_2.11:2.0.0-M1
- com.datastax.cassandra:cassandra-driver-core:3.0.2

为本地安装Java和spark设置Sys.setnev设置,配置设置为使用yml文件。使用以下命令启动Spark连接:

sc <- spark_connect(master = "spark://<cluster_address>", config = spark_config(file = "config.yml"))

Spark会话以:

启动
sparkSession <- sparklyr::invoke_static(sc, org.apache.spark.sql.SparkSession", "builder") %>% 
    sparklyr::invoke("config", "spark.cassandra.connection.host", "<cluster_address>") %>% 
    sparklyr::invoke("getOrCreate")

这里似乎很好,(sc连接和sparkSession),但现在尝试访问cassandra表(key_1中的table_1),我知道它存在:

cass_df <- invoke(sparkSession, "read") %>% 
invoke("format", "org.apache.spark.sql.cassandra") %>% 
invoke("option", "keyspace", "keyspace_1") %>% 
invoke("option", "table", "table_1") %>% 
invoke("load")

引发以下错误:

Error: java.lang.IllegalArgumentException: Cannot build a cluster without contact points
at com.datastax.driver.core.Cluster.checkNotEmpty(Cluster.java:123)
at com.datastax.driver.core.Cluster.(Cluster.java:116)
at com.datastax.driver.core.Cluster.buildFrom(Cluster.java:182)
at com.datastax.driver.core.Cluster$Builder.build(Cluster.java:1274)
at com.datastax.spark.connector.cql.DefaultConnectionFactory$.createCluster(CassandraConnectionFactory.scala:92) . . .

1 个答案:

答案 0 :(得分:0)

终于解决了它,感谢一个有用的提示。我正在使用SPARK(带端口号)来初始化SparkSession,而不仅仅是集群地址(cassandra所在的位置)。有用!谢谢@ user7337271。