можно ли подключиться к mongodb из SparklyR

я могу подключиться к MongoDB из SparkR (я использую R Studio, Spark 2.x.x, коннектор Mongo v2.0), как описано здесь https://docs.mongodb.com/spark-connector/current/r-api/. Я хотел бы сделать то же самое, используя SparklyR, возможно ли это? Примеров для него найти не удалось.


person Amit Arora    schedule 10.06.2017    source источник


Ответы (2)


Я также пытаюсь загрузить из монго с помощью sparklyr. Я еще не нашел решения, но это то, что я пробовал до сих пор (моя база данных "nasa", а коллекция "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)

Это еще не работает, но, возможно, может дать вам некоторые идеи. Я надеюсь, что это помогает

person Ender    schedule 02.07.2017

Наконец, кажется, что это возможно, но есть более простой способ, установив разрабатываемую версию sparklyr:

devtools::install_github("rstudio/sparklyr")

с последующим:

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» и «eva» — это база данных mongo и коллекция mongo соответственно. Дополнительную информацию можно найти здесь на форуме sparklyr github. Надеюсь, это поможет!

person Ender    schedule 07.07.2017