我正在处理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对象)?
答案 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)
问题是您的代码是否以这种方式进行了调整。