Sparkly本地运行测试速度
我尝试了sparkly文档中的一个示例,它似乎比没有sparkly时运行得慢 使用sparkly时,以下代码花费了2秒,而不使用sparkly时,则花费了0.14秒:Sparkly本地运行测试速度,r,sparklyr,R,Sparklyr,我尝试了sparkly文档中的一个示例,它似乎比没有sparkly时运行得慢 使用sparkly时,以下代码花费了2秒,而不使用sparkly时,则花费了0.14秒: sc <- spark_connect(master = "local") flights_tbl <- copy_to(sc, nycflights13::flights, "flights") # the following takes 2.3 seconds: tic()
sc <- spark_connect(master = "local")
flights_tbl <- copy_to(sc, nycflights13::flights, "flights")
# the following takes 2.3 seconds:
tic()
delay <- flights_tbl %>%
group_by(tailnum) %>%
summarise(count = n(), dist = mean(distance), delay = mean(arr_delay)) %>%
filter(count > 20, dist < 2000, !is.na(delay)) %>%
collect
toc()
# takes 2 seconds if cached:
tbl_cache(sc, "flights")
tic()
delay <- flights_tbl %>%
group_by(tailnum) %>%
summarise(count = n(), dist = mean(distance), delay = mean(arr_delay)) %>%
filter(count > 20, dist < 2000, !is.na(delay)) %>%
collect
toc()
# 0.14 seconds without sparkly
tic()
delay <- nycflights13::flights %>%
group_by(tailnum) %>%
summarise(count = n(), dist = mean(distance), delay = mean(arr_delay)) %>%
filter(count > 20, dist < 2000, !is.na(delay)) %>%
collect
toc() # 0.14
为什么这段代码在使用sparkly时会变慢?当我使用像parlappy这样的函数时,我得到了巨大的加速。为什么sparkly会减慢速度?这是由于启动Spark worker、向其传递数据并将其收集回来的开销造成的。如果开销比处理任务本身的时间长,那么您只测量开销。那么,您是说这个任务真的是并行运行的?因为有超过300000行,所以我认为这足以看到速度提升。还有,为什么当表缓存在内存中时,开销没有消失呢?如果您能够在0.14秒内运行任务而不使用sparkly,那么这不是一项大数据任务,您也不能期望任何收益。为了确保任务并行运行,在复制数据集至少100次后,您可以在task manager中查看cores活动,以便与开销相比执行需要足够的时间(确保您有足够的内存)
$config$spark.sql.shuffle.partitions.local
[1] 12