在带有LocalCluster
的Dask分布式调度程序的上下文中:有人可以帮助我了解具有大型(堆)映射功能的动态吗?
例如,考虑Dask数据帧ddf
和map_partitions
操作:
def mapper():
resource=... #load some large resource eg 50MB
def inner(pdf):
return pdf.apply(lambda x: ..., axis=1)
return inner
mapper_fn = mapper() #50MB on heap
ddf.map_partitions(mapper_fn)
这里发生了什么? Dask会序列化mapper_fn
并发送给所有任务吗?说,我有n
个分区,所以有n
个任务。
根据经验,我观察到,如果我有40个任务和一个50MB的映射器,则大约需要70 s taks才能开始工作,该集群似乎有点坐满了CPU,但是仪表板什么也没显示。这是怎么回事在碟形分布式调度程序中具有较大(堆)功能的结果是什么?