2017-01-26 47 views
0

我花了上週的時間試圖弄清楚如何使用sparlyr來獲取spark以連接到本地羣集上的cassandra,並且我碰到了牆 - 任何幫助都會不勝感激。我是唯一一個試圖使用R/Rstudio進行連接的人(其他人在NetBeans和Maven上使用Java),並且我不確定我需要做什麼來完成此項工作。無法將Spark連接到RStudio中的Cassandra DB

我使用的堆棧: 的Ubuntu 16.04(在VM) sparklyr:0.5.3 星火: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 

Sys.setnev設置爲本地安裝Java和spark,config設置爲使用yml文件。星火連接與啓動:

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

星火會話使用啓動:

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),但現在嘗試訪問卡桑德拉表(TABLE_1在在keyspace_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) . . . 
+0

缺少'spark.cassandra.connection.host'? – user7337271

+0

是的!這只是我需要的提示。當啓動我的sparkSession時,我使用了SPARK (帶有端口號),而不僅僅是集羣地址(cassandra所在的位置)。有用!謝謝@ user7337271。 – renegademonkey

回答

0

終於解決了它,這要歸功於一個有用的提示。我使用SPARK(帶端口號)來初始化SparkSession,而不僅僅是集羣地址(cassandra所在的位置)。有用!謝謝@ user7337271。