R中的并行或雪地套件能否与spark cluster接口?
我正在处理R中的一个计算密集型包。这个包没有与Spark集群接口的替代实现;但是,它确实有一个可选参数,用于接收使用并行包创建的集群。我的问题是,我是否可以使用类似SparkyR的东西连接到spark群集,然后将该spark群集作为makeCluster命令的一部分传递到我的函数中 我已经成功地让集群与并行机一起工作,但我不知道如何或是否有可能利用spark集群R中的并行或雪地套件能否与spark cluster接口?,r,apache-spark,parallel-processing,snow,bnlearn,R,Apache Spark,Parallel Processing,Snow,Bnlearn,我正在处理R中的一个计算密集型包。这个包没有与Spark集群接口的替代实现;但是,它确实有一个可选参数,用于接收使用并行包创建的集群。我的问题是,我是否可以使用类似SparkyR的东西连接到spark群集,然后将该spark群集作为makeCluster命令的一部分传递到我的函数中 我已经成功地让集群与并行机一起工作,但我不知道如何或是否有可能利用spark集群 library(bnlearn) library(parallel) my_cluster <- makeCluster(3)
library(bnlearn)
library(parallel)
my_cluster <- makeCluster(3)
...
pc_structure <- pc.stable(train[,-1], cluster = my_cluster)
库(bnlearn)
图书馆(平行)
我的_cluster如果这能解决您的问题(如果我理解正确的话),我会将您使用并行包的代码包装到sparkR函数中,例如spark.lappy
(或者类似于SparkyR的东西,我没有这方面的经验)
我假设您的Spark cluster是基于Linux的,因此应该使用并行包中的mcapply
函数(而不是Windows上的makeCluster
和随后的clusterExport
)
例如,对列表中每个元素的数字进行汇总的本地执行任务(在Linux上):
使用Spark cluster执行相同任务10000次:
input = list(c(1,2,3), c(1,2,3,4), c(1,2,3,4,5))
save(input, file="/path/testData.RData")
res = spark.lapply(1:10000, function(x){
library(parallel)
load("/path/testData.RData")
mclapply(X=input, FUN=sum, mc.cores=3)
})
问题是您的代码是否可以这样调整 如果这能解决您的问题(如果我理解正确的话),我会将您使用并行包的代码包装到sparkR函数中,例如spark.lappy
(或者SparkyR中类似的东西,我对此没有经验)
我假设您的Spark cluster是基于Linux的,因此应该使用并行包中的mcapply
函数(而不是Windows上的makeCluster
和随后的clusterExport
)
例如,对列表中每个元素的数字进行汇总的本地执行任务(在Linux上):
使用Spark cluster执行相同任务10000次:
input = list(c(1,2,3), c(1,2,3,4), c(1,2,3,4,5))
save(input, file="/path/testData.RData")
res = spark.lapply(1:10000, function(x){
library(parallel)
load("/path/testData.RData")
mclapply(X=input, FUN=sum, mc.cores=3)
})
问题是您的代码是否可以这样调整 或者,我可以连接Spark正在利用RStudio服务器关闭的基础EMR群集吗?或者,我可以连接Spark正在利用RStudio服务器关闭的基础EMR群集吗?
input = list(c(1,2,3), c(1,2,3,4), c(1,2,3,4,5))
save(input, file="/path/testData.RData")
res = spark.lapply(1:10000, function(x){
library(parallel)
load("/path/testData.RData")
mclapply(X=input, FUN=sum, mc.cores=3)
})