Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/webpack/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sparkly本地运行测试速度_R_Sparklyr - Fatal编程技术网

Sparkly本地运行测试速度

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()

我尝试了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()
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