【问题标题】:is it possible to connect to mongodb from SparklyR是否可以从 SparklyR 连接到 mongodb
【发布时间】:2017-11-12 17:18:29
【问题描述】:

我可以从 SparkR 连接到 MongoDB(我正在使用 R Studio、Spark 2.x.x、Mongo 连接器 v2.0),如此处所述https://docs.mongodb.com/spark-connector/current/r-api/。我想用 SparklyR 做同样的事情,这可能吗?找不到任何例子。

【问题讨论】:

    标签: mongodb sparklyr


    【解决方案1】:

    我也在尝试使用 sparklyr 从 mongo 加载。我还没有找到解决方案,但这是我迄今为止尝试过的(我的数据库是“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)
    

    它还没有工作,但也许可以给你一些想法。希望对你有帮助

    【讨论】:

      【解决方案2】:

      最后似乎是可能的,但是通过安装 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 论坛上找到更多信息 here。 我希望这会有所帮助!

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2019-04-15
        • 1970-01-01
        • 1970-01-01
        • 2019-11-21
        • 2015-06-04
        • 1970-01-01
        • 2019-04-29
        相关资源
        最近更新 更多