磁盘洗牌上的 Dask 压缩

Compression for Dask on disk shuffle

目前我正在使用一组 lz4 压缩的 Parquet 文件在 Dash 本地集群上工作。 读取和写入压缩文件工作正常但是在设置和索引时,shuffle算法会向磁盘写入大量未压缩的数据(数据比我的内存大所以我在磁盘上使用内存不足的shuffling)。

Dask 中的洗牌是通过 partd 项目完成的,该项目本身支持使用 snappy 或 lz4 进行压缩。但是,我无法为本地工作人员和洗牌文件激活压缩。 有什么方法可以使用环境变量或 dask.settings?

非常感谢

import dask
import dask.dataframe as dd
from dask.distributed import Client

# setup local cluster
client = Client(n_workers=2, threads_per_worker=4, processes=False, memory_limit='16GB')

# load, set index, save
df = dd.read_parquet('Data/Parquet', engine='fastparquet')  # <-- is compressed
df2 = df.set_index(use_columns, shuffle='disk')  # <-- generates a lot of uncompressed data on the disk
df2.to_parquet('Data/ParquetSorted', engine='fastparquet', compression="lz4")  # <-- again compressed

编辑:功能已同时实现

我只是快速浏览了一下代码,看起来今天的答案是 "No. This is hard coded." 这可以更改,但需要一些技术讨论。我鼓励您在 https://github.com/dask/dask/issues/new

提出问题