我有一个大约70GB的dask数据帧和3个无法容纳到内存中的列。我的机器是8 CORE Xeon,具有64GB的Ram和本地的Dask Cluster。
我必须将3列中的每列都包含在另一个更大的数据框中。
The documentation建议分区大小为100MB。但是,鉴于这种数据量,加入700个分区似乎比加入70个分区(1000 MB)要多得多。
是否有理由将其保持在700 x 100MB的分区上? 如果不是,应该在此处使用哪个分区大小? 这还取决于我使用的工人数量吗?
答案 0 :(得分:1)
最佳分区大小取决于许多不同的因素,包括可用的RAM,正在使用的线程数,数据集的大小以及在许多情况下您正在执行的计算。
例如,在您的情况下,如果您的联接/合并代码可能是您的数据具有高度重复性,那么您的100MB分区可能会迅速扩展到100x到10GB分区,并迅速填满内存。否则他们可能不会;这取决于您的数据。另一方面,联接/合并代码确实会产生n*log(n)
个任务,因此减少任务数量(并因此增加分区大小)会非常有利。
确定最佳分区大小具有挑战性。通常,我们能做的最好的就是提供有关正在发生的事情的见解。在这里可用: