无法在 RStudio 中将 Spark 连接到 Cassandra DB
Unable to connect Spark to Cassandra DB in RStudio
上周我一直在试图弄清楚如何使用 sparlyr 来获取 spark 以连接到我们本地集群上的 cassandra,但我遇到了困难 - 任何帮助将不胜感激。我是唯一一个尝试使用 R/Rstudio 建立此连接的人(其他人都在 NetBeans 和 Maven 上使用 Java),但我不确定我需要做什么才能完成这项工作。
我使用的堆栈是:
Ubuntu 16.04(在虚拟机中)
火花: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 的本地安装,配置设置为使用 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 connection 和 sparkSession),但现在尝试访问 cassandra table(table_1 in in in 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) . . .
终于解决了,多亏了一个有用的 tip.I 是使用 SPARK(带有端口号)来初始化 SparkSession 而不仅仅是集群地址(cassandra 所在的位置)。有用!谢谢@user7337271。
上周我一直在试图弄清楚如何使用 sparlyr 来获取 spark 以连接到我们本地集群上的 cassandra,但我遇到了困难 - 任何帮助将不胜感激。我是唯一一个尝试使用 R/Rstudio 建立此连接的人(其他人都在 NetBeans 和 Maven 上使用 Java),但我不确定我需要做什么才能完成这项工作。
我使用的堆栈是: Ubuntu 16.04(在虚拟机中) 火花: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 的本地安装,配置设置为使用 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 connection 和 sparkSession),但现在尝试访问 cassandra table(table_1 in in in 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) . . .
终于解决了,多亏了一个有用的 tip.I 是使用 SPARK(带有端口号)来初始化 SparkSession 而不仅仅是集群地址(cassandra 所在的位置)。有用!谢谢@user7337271。