R:Lapply 相当于 Revoscaler/Revolution 企业?

R: Lapply equivalent for Revoscaler/Revolution Enterprise?

有革命企业。想要对目录中的 121k 文件中的每一个进行 运行 2 次简单但计算量大的操作,输出到新文件。希望使用一些 Revoscaler 函数 chunked/parallel 以类似于 lapply 的方式处理数据。所以我有 lapply(文件列表,函数),但使用可能实际完成的更快的 Rxdf(revoscaler)函数,因为我怀疑基本 lapply 永远不会完成。

那么 lapply 有 Revoscaler 版本吗? 运行从 Revolution Enterprise 中使用它会自动分块吗?

我看到 parlapply、mclapply(http://www.inside-r.org/r-doc/parallel/clusterApply)...can 我 运行 这些在同一个桌面上使用内核?Aws 服务器?我能从 运行如果 Revoscaler 不是本机 Rxdf 函数,则在 Revoscaler 中使用这些包?我想这是一个关于在这种情况下我可以用作 "cluster" 的更多问题。

rxExec,在单核场景下表现得像lapply,在multi-core/multi-process场景下表现得像parLapply。你会像这样使用它:

# vector of file names to operate on
files <- list.files()

rxSetComputeContext("localpar")
rxExec(function(fname) { 
    ...
}, fname=rxElemArg(files))

这里,func是对文件进行你想要的操作的函数;然后你将它传递给 rxExec,就像传递给 lapply 一样。 rxElemArg 函数告诉 rxExecfiles 的每个不同值执行 func。将计算上下文设置为 "localpar" 会启动本地从属进程集群,因此操作将 运行 并行。默认情况下,slaves 的数量是 4,但是你可以用 rxOptions(numCoresToUse).

改变这个

您期望获得多少加速?这取决于你的数据。如果你的文件很小,而且大部分时间都花在了计算上,那么并行处理可以大大加快速度。但是,如果您的文件很大,那么您可能 运行 陷入 I/O 瓶颈,尤其是当所有文件都在同一硬盘上时。