如何在SparkR中使用spark.addFile在工作节点上安装包?

时间:2017-01-09 16:32:25

标签: r apache-spark sparkr

在Spark 2.1中,有一项新功能可以使用spark.addFile在工作节点上安装第三方软件包。此函数在每个节点上添加要与Spark作业一起下载的文件或目录。然后spark.getSparkFiles(fileName)可用于查找其下载位置。可以找到文档here

我无法在SparkR shell中的worker上安装任何软件包。有人知道怎么做吗?

例如,我想在所有工作人员上安装foreach包,如下所示:

sparkR --master yarn --deploy-mode client

然后:

spark.addFile('foreach_1.4.3.tar.gz')
df <- as.DataFrame(faithful)

result <- gapplyCollect(
    df,
    "waiting",
    function(key, x) {
        y <- data.frame(key, max(x$eruptions))
        colnames(y) <- c("waiting", "max_eruption")     
        install.packages(spark.getSparkFiles('foreach_1.4.3.tar.gz'),repos=NULL,type='source')
        library(foreach)
        y
    })
head(result[order(result$max_eruption, decreasing = TRUE), ])

但是,作为错误消息的一部分,我看到了:

Error in invokeJava(isStatic = TRUE, className, methodName, ...) :
  No connection to backend found. Please re-run sparkR.session()

当我评论install.packages(spark.getSparkFiles....行时,我收到此错误:

Error in library(foreach) : there is no package called âforeachâ

0 个答案:

没有答案