我刚开始测试Spark R 2.0,发现dapply的执行非常慢。
例如,以下代码
set.seed(2)
random_DF<-data.frame(matrix(rnorm(1000000),100000,10))
system.time(dummy_res<-random_DF[random_DF[,1]>1,])
user system elapsed
0.005 0.000 0.006 `
在6ms内执行
现在,如果我在4个分区上创建Spark DF,并在4个核心上运行,我得到:
sparkR.session(master = "local[4]")
random_DF_Spark <- repartition(createDataFrame(random_DF),4)
subset_DF_Spark <- dapply(
random_DF_Spark,
function(x) {
y <- x[x[1] > 1, ]
y
},
schema(random_DF_Spark))
system.time(dummy_res_Spark<-collect(subset_DF_Spark))
user system elapsed
2.003 0.119 62.919
即。 1分钟,这是异常缓慢......我错过了什么?
我也收到警告(TaskSetManager:Stage 64包含一个非常大的任务(16411 KB)。建议的最大任务大小为100 KB。)。为什么这个100KB的限制如此之低?
我在Mac OS 10.10.5上使用R 3.3.0
欢迎任何见解!