如何检查在Dask上调用compute是否安全?

时间:2018-03-25 12:38:11

标签: python pandas dataframe dask

当我运行这个时,我正在尝试计算log1p到整个列的大数据集(4GB~1250万行)时,我的PC已经冻结了:

df_train = dd.read_csv('data/train.csv')
s = df_train.unit_sales.map_partitions(np.log1p)
s.compute()

那么,我如何处理知道计算函数是否安全?

1 个答案:

答案 0 :(得分:3)

请注意,当您调用.compute()时,您正在将惰性Dask数据帧转换为内存中的Pandas数据帧。您的结果(在这种情况下为s.compute())应该适合记忆。如果您愿意,可以致电s.memory_usage().compute()查看计算结果的大小。

相反,只使用.to_csv().to_parquet()等方法计算小结果或将大结果写回磁盘是很常见的。如果您在群集上并且想要使用分布式内存,那么您可能希望使用persist而不是compute