dask dataframe.persist() 是不是保留下一个查询的结果?

Posted

技术标签:

【中文标题】dask dataframe.persist() 是不是保留下一个查询的结果?【英文标题】:Does dask dataframe.persist() keep results for the next query?dask dataframe.persist() 是否保留下一个查询的结果? 【发布时间】:2019-08-06 13:39:19 【问题描述】:

我试图了解df.persist()dask 中的工作原理。我会再次构建相同的表达式,它会重新计算它还是从缓存中加载它?

例如当我这样做时会发生什么:

ddf = dask.dataframe.read_csv('my.csv').shift(1).persist()
print(ddf.sum().compute())
del ddf
ddf = dask.dataframe.read_csv('my.csv').shift(1).persist()
print(ddf.mean().compute())

dask 是读取.csv 并移动两次,还是第二次来自缓存?我需要第二个.persist() 吗?如果它保留在缓存中,我如何强制清理缓存?

【问题讨论】:

【参考方案1】:

当您调用persist 时,它会将数据保存在分布式内存中,这样您就无需再次重新计算该部分的计算。

你可以通过删除集合来释放内存,就像你在第 3 行所做的那样。

如果你删除了集合,那么是的,你需要重新持久化中间结果。

https://distributed.dask.org/en/latest/memory.html

【讨论】:

谢谢!我也很清楚,persist 只是在 RAM 中持久化并一直保持到persist() 返回的未来被释放。

以上是关于dask dataframe.persist() 是不是保留下一个查询的结果?的主要内容,如果未能解决你的问题,请参考以下文章

从 dask 对象查看 dask 图

在 dask 产生的进程中调用 dask

Dask:我如何将我的代码与 dask 延迟并行化?

compute() 在 dask 中做啥?

使用 Dask 数据帧的 Autosklearn 预测/ Autosklearn 对 dask 数据帧的支持

Airflow 中文文档:用Dask扩展