------------------------
library(parallel)
library(iterators)
library(foreach)
library(doParallel)
cores=detectCores()
cl <- makeCluster(cores[1]-1)
registerDoParallel(cl)
a=rep(100, NA)
rate=rep(100, NA)
foreach(i = 1:100)%dopar%{
rate[i] = i / 100
b=runif(100, 0,1)
c=runif(100, 0,1)
a[i]=mean(b^2+c^2<rate[i])
}
plot(rate, a)
#stop cluster
stopCluster(cl)
这个可能比较麻烦,需要对R程序的底层API和package都要进行重构以适应分布式运算和分布式文件存储,现在好像没有什么好办法,因为现在很多包如果放到分布式上面可能都不能运行。有程序方面的原因,也有可能很多统计算法并不适合分布式计算简单说就是R语言和Spark的一个接口,可以通过R语言调用Spark的计算能力,把计算任务分配到Spark的节点上来做。
亮点:
1、近乎完整的dplyr语法!用过dplyr的同学一定知道这套语法是多么的人性化…
2、可以直接调用Spark的机器学习能力!再也不用纠结pull到R里面的数据不够...
3、不要钱……
弱点:
1、如果不是Spark包自带的算法的话还是要自己Call Spark API写…要懂一点分布式开发
2、仔细一想这就是给Spark做了个壳...不能说是用R在做分布式运算orz
至于Microsoft...现在有Microsoft R Server, 提供了很多R原生函数的High Performance Analysis版本,可以实现并行运算...