2017-01-26 66 views
0

Я провел последнюю неделю, пытаясь понять, как использовать sparlyr, чтобы получить искру, чтобы подключиться к cassandra в нашем локальном кластере, и я ударил стену - любая помощь будем очень благодарны. Я единственный, кто пытается использовать R/Rstudio для подключения (все остальные используют Java на NetBeans и Maven), и я не уверен, что мне нужно сделать, чтобы сделать эту работу.Невозможно подключить Spark к Cassandra DB в RStudio

стек я использую: Ubuntu 16,04 (в VM) sparklyr: 0.5.3 Spark: 2.0.0 Scala: 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 и искры, конфигурация набора использовать файл 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") 

Это все кажется штраф до здесь (соединение СБН и sparkSession), но теперь пытается получить доступ к таблице Cassandra (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.

 Смежные вопросы

  • Нет связанных вопросов^_^