在单个列上执行操作时,dask是否会加载所有列?

时间:2019-03-14 09:41:13

标签: dask

每当我使用dask数据框进行计算时,请确保仅加载必要的列以节省计算速度。

我只是不了解dask是如何在内部工作的,为什么他不从镶木地板柱状格式中受益。

test.parquet下面的小示例中,是一个镶木地板文件,其中包含13列各种dtype,1000万行和16个分区。如您所见,如果我只对单个列的最小值感兴趣,则仅加载目标列时,速度会显着提高。使用分布式调度程序时,我还可以看到将较少的数据加载到内存中。

为什么在加载整个数据框而不是仅目标列时dask需要花费更长的时间计算?怎样解释与示例中相同的计算中的开销?

small example

1 个答案:

答案 0 :(得分:2)

这实际上是性能下降,我们正在努力纠正。已经存在将数据列的选择从数据帧自动传递到加载器以明确执行您所要执行的操作的代码,但是较新的图形优化代码尚未完全适用于镶木地板IO件。如果您的解决方法太烦人了,则可以通过将Dask的几个发行版降级来获得相同的性能。