Dask:腌制数据框以供以后使用安全吗?

Arc*_*ast 5 python dask

我有一个类似数据库的对象,其中包含许多 dask 数据帧。我想处理数据,保存并在第二天重新加载以继续分析。

因此,我尝试使用pickle保存dask数据帧(不是计算结果,只是“计算计划”本身)。显然,它是有效的(至少,如果我在同一台机器上解开对象)......但是有一些陷阱吗?

MRo*_*lin 2

一般来说,通常是安全的。但有一些注意事项:

  1. 如果您的 dask.dataframe 包含自定义函数,例如 with ,df.apply(lambda x: x)那么内部函数将无法pickle。但是它仍然可以使用cloudpickle进行序列化
  2. 如果您的 dask.dataframe 包含对仅在本地计算机上有效的文件的引用,那么虽然它仍然可以序列化,但在另一台计算机上重新序列化的版本可能不再有用
  3. 如果您的 dask.dataframe 包含dask.distributed Future对象(例如Executor.persist在集群上使用时会发生这种情况),那么这些对象当前不可序列化。
  4. 我建议使用 >= 0.11.0 的版本。