如何在R中的spark_apply中使用包?

时间:2019-01-11 03:12:38

标签: r sparklyr

我需要在spark_apply软件包中使用带有sparklyr函数的R软件包。 rdocumentation不太清楚。我尝试通过遵循此link使spark_apply工作。它在第一部分中进行了以下修改。

工作部分:

library(sparklyr)

spark_apply_bundle(packages = T, base_path = getwd())

bundle <- paste(getwd(), list.files()[grep("\\.tar$",list.files())][1], sep = "/")

hdfs_path <- "hdfs://<my-ip>/user/hadoop/R/packages/packages.tar"
system("hdfs dfs -moveFromLocal", bundle, "hdfs://<my-ip>/user/hadoop/R/packages")

config <- spark_config()

config$sparklyr.shell.files <- "hdfs://<my-ip>/user/hadoop/R/packages/packages.tar"

sc <- spark_connect(master = "yarn-client", 
                    version = "2.4.0", 
                    config = config)
mtcars_sparklyr <- copy_to(sc, mtcars)

但是,当我尝试在svm中使用spark_apply函数时,使用packages参数却无法使用。

result <- mtcars_sparklyr %>%
  spark_apply(
    function(d) {
      fit <- svm(d$mpg, d$wt)
      sum(fit$residuals ^ 2)
      },
    group_by = "cyl",
    packages = bundle
  )

另一方面,以下内容有效。这是如果我在svm中传递了context函数。但是,我需要packages参数起作用,因为我有几个软件包及其功能可以在spark_apply中使用。

result <- mtcars_sparklyr %>%
  spark_apply(
    function(d) {
      fit <- svm(d$mpg, d$wt)
      sum(fit$residuals ^ 2)
    },
    group_by = "cyl",
    context = {svm <- e1071::svm}
  )

0 个答案:

没有答案