SparkR,工作人员无法加载库

SparkR, worker cannot load library

我最近开始使用 SparkR。我有 1 个主人和 3 个工人 运行ning 和 AWS。我正在使用 RSudio 服务器。我的代码涉及stringr包,这个包已经安装到所有节点上的/usr/share/R/library

但是当我 运行 SparkR:::map(data, function(x){str_replace(x, "XXXX", "XXxxx")}) 时,我得到了错误

could not find function "str_replace"

如何在工作节点上加载包?

要从库中访问函数,您可以加载并附加它:

library(stringr) # Or require(stringr)
str_replace(x, "XXXX", "XXxxx")

或使用双冒号运算符:

stringr::str_replace(x, "XXXX", "XXxxx")

不幸的是 :: 非常昂贵,所以如果您希望保持命名空间干净,您应该考虑创建本地绑定:

str_replace <- stringr::str_replace
str_replace(x, "XXXX", "XXxxx")

一方面不使用内部 API 和 ::: 可能不是最好的主意。忽略良好实践,在实践中发挥作用实在是太慢了。