2017-06-10 2 views

Répondre

0

J'essaye aussi de charger du mongo en utilisant sparklyr. Je ne l'ai pas trouvé une solution encore, mais c'est ce que je l'ai essayé jusqu'à présent (ma base de données est « nasa » et la collection est « eva »):

library(sparklyr) 
spark_home <- "/home/my_user_name/Workspaces/Mongo/spark-2.0.1-bin-hadoop2.7/" 
Sys.setenv(SPARK_HOME=spark_home) 
config <- sparklyr::spark_config() 
config$sparklyr.defaultPackages <- c("org.mongodb.spark:mongo-spark-connector_2.10:1.1.0") 
config$spark.mongodb.input.uri <- "mongodb://localhost:27017/nasa.eva" 
config$spark.mongodb.output.uri <- "mongodb://localhost:27017/nasa.eva" 

Spark.connection <<- sparklyr::spark_connect(master = "local", version = "2.0.1", config = config) 

Spark.session <<- sparklyr::invoke_static(Spark.connection, "org.apache.spark.sql.SparkSession", "builder") %>% sparklyr::invoke("config", "spark.cassandra.connection.host", "localhost") %>% sparklyr::invoke("getOrCreate") 

uri <- "mongodb://localhost/nasa.eva" 
load <- invoke(Spark.session, "read") %>% invoke("format", "com.mongodb.spark.sql.DefaultSource") %>% invoke("option", "spark.mongodb.input.uri", uri) %>% invoke("option", "keyspace", "nasa") %>% invoke("option", "table", "eva") %>% invoke("load") 

tbl <- sparklyr:::spark_partition_register_df(Spark.connection, load, "mongo_tbl", 0, TRUE) 

Il ne fonctionne pas encore, mais peut-être donner vous quelques idées. J'espère que cela aide

0

Enfin, il semble qu'il est possible, mais il est un moyen plus facile en installant la version de développement de sparklyr:

devtools::install_github("rstudio/sparklyr")

suivi par:

config <- spark_config() 
config$sparklyr.defaultPackages <- c("org.mongodb.spark:mongo-spark-connector_2.10:1.1.0") 
sc <- spark_connect(master = "local", config = config) 
uri <- "mongodb://localhost/nasa.eva" 
spark_read_source(
     sc, 
     "spark-table-name", 
     "com.mongodb.spark.sql.DefaultSource", 
     list(
     spark.mongodb.input.uri = uri, 
     keyspace = "nasa", 
     table = "eva"), 
     memory = FALSE) 

"nasa" et "eva" sont la base de données mongo et la collection mongo, respectivement. Vous pouvez trouver plus d'informations here, sur le forum sparklyr github. J'espère que cela aide!