from-rest group by如何最大化单机Dask性能?
How to maximise single-machine Dask performance for from-rest group by?
我有一个很大的 CSV,我将其读入 Dask 并像这样执行分组
import dask.dataframe as dd
aa = dd.read_csv("large.csv")
# takes 20 seconds
aa.var0.value_counts().compute()
并且需要 20 秒。
但是,如果我将数据存储为镶木地板,那么同样的操作只需要 7 秒。
aa.to_parquet("large.parquet")
aa = dd.read_parquet("large.parquet")
# takes 7 seconds
aa.var0.value_counts().compute()
我可以做些什么来进一步加快速度吗?一般的问题是这样的:我有一个位于硬盘驱动器上的数据集(数据格式不受限制,但我只有一台机器,所以没有集群),如何最大化性能一个简单的分组操作,其中数据在磁盘上启动(即尚未加载到 RAM 中)?
我相信这不是 dask 特有的,而是由于 CSV 和镶木地板的格式化方式。
见
您可以通过仅加载一列来进一步加快速度
aa = dd.read_parquet("large.parquet", columns = ["var0"])
# takes 7 seconds
aa.var0.value_counts().compute()
可能还有更多的事情可以做,例如确保 Dask 使用更多的工人。
我有一个很大的 CSV,我将其读入 Dask 并像这样执行分组
import dask.dataframe as dd
aa = dd.read_csv("large.csv")
# takes 20 seconds
aa.var0.value_counts().compute()
并且需要 20 秒。
但是,如果我将数据存储为镶木地板,那么同样的操作只需要 7 秒。
aa.to_parquet("large.parquet")
aa = dd.read_parquet("large.parquet")
# takes 7 seconds
aa.var0.value_counts().compute()
我可以做些什么来进一步加快速度吗?一般的问题是这样的:我有一个位于硬盘驱动器上的数据集(数据格式不受限制,但我只有一台机器,所以没有集群),如何最大化性能一个简单的分组操作,其中数据在磁盘上启动(即尚未加载到 RAM 中)?
我相信这不是 dask 特有的,而是由于 CSV 和镶木地板的格式化方式。
见
您可以通过仅加载一列来进一步加快速度
aa = dd.read_parquet("large.parquet", columns = ["var0"])
# takes 7 seconds
aa.var0.value_counts().compute()
可能还有更多的事情可以做,例如确保 Dask 使用更多的工人。