在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â