R中的并行或除雪程序包可以与火花群集交互吗?

时间:2019-03-22 20:11:25

标签: r apache-spark parallel-processing snow bnlearn

我正在处理R中的计算密集型程序包。此程序包没有与Spark集群接口的替代实现;但是,它确实具有可选参数,以接受由并行程序包创建的集群。我的问题是我可以使用SparklyR之类的东西连接到Spark集群,然后将其作为makeCluster命令的一部分传递到我的函数中吗?

我已经成功地使集群与并行工作,但是我不知道如何或是否有可能利用Spark集群。

library(bnlearn)
library(parallel)

my_cluster <- makeCluster(3)
...
pc_structure <- pc.stable(train[,-1], cluster = my_cluster)

我的问题是我可以按如下所示连接到Spark集群吗?

sc <- spark_connect(master = "yarn-client", config = config, version = '1.6.2')

然后在makeCluster()函数中利用连接(sc对象)?

1 个答案:

答案 0 :(得分:0)

如果这可以解决您的问题(并且如果我对您的理解正确),我会将使用并行包的代码包装到sparkR函数中,例如input(或类似的Sparklyr,没有经验)。

我假设您的Spark集群基于Linux,因此应使用并行包中的spark.lapply函数(而不是Windows上的mcapply和随后的makeCluster)。

例如,在本地执行的对列表中每个元素的数字求和的任务将是(在Linux上):

clusterExport

,并使用Spark集群执行相同的任务10000次:

library(parallel)
input = list(c(1,2,3), c(1,2,3,4), c(1,2,3,4,5))
res = mclapply(X=input, FUN=sum, mc.cores=3)

问题是您的代码是否以这种方式进行了调整。