R:Lapply等同于Revoscaler / Revolution Enterprise?

时间:2015-10-22 08:40:21

标签: r parallel-processing lapply revolution-r

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

还有一个Revoscaler版本的lapply?从Revolution Enterprise运行它会自动产生什么东西吗?

我看到parlapply,mclapply(http://www.inside-r.org/r-doc/parallel/clusterApply)...can我在同一台桌面上使用内核运行这些内容?Aws服务器?如果它不是原生的Rxdf函数,我是否可以在Revoscaler中运行这些软件包?我猜那么这是一个更多关于在这种情况下我可以用作“集群”的问题。

1 个答案:

答案 0 :(得分:3)

rxExec,其行为类似于单核方案中的lapply,与多核/多进程方案中的parLapply类似。你可以这样使用它:

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

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

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

您期望获得多少加速?这取决于您的数据。如果您的文件很小并且大部分时间都是通过计算占用的,那么并行处理可以让您获得更大的加速。但是,如果您的文件很大,那么您可能会遇到I / O瓶颈,特别是如果所有文件都在同一个硬盘上。