用途:Dask 用于处理超出内存的数据与并行计算,把熟悉的 pandas/NumPy API 扩展到多核与集群环境。适合超过可用内存的数据集处理、并行化 pandas/NumPy 操作、批量处理 CSV/Parquet/JSON/HDF5/Zarr 文件、自定义并行任务依赖、以及跨集群(SLURM、Kubernetes)分发工作负载。资料提到:单机内存内提速可用 polars,单机 out-of-core 分析可用 vaex。
主要能力与组件:DataFrames(并行 pandas)、Arrays(并行 NumPy)、Bags(非结构化/文本数据处理)、Futures(基于任务的并行)、Schedulers(执行后端)。DataFrames/Arrays/Bags 采用惰性求值,需调用 .compute() 或 .persist() 才执行;Futures 为即时执行。支持 map_partitions、map_blocks、repartition、set_index(sorted=True)、to_parquet、to_zarr、groupby、merge、SVD、foldby 等操作。
安装:pip install dask[complete]、dask[dataframe]、dask[distributed]、dask-jobqueue。
用法要点:用 dd.read_csv()/da.from_zarr() 直接读取;用 dask.compute(a, b, c) 批量计算;用 client.dashboard_link 查看任务进度与内存。调度器可选 threads(默认)、processes、synchronous、distributed;分布式可用 Client(n_workers=…, threads_per_worker=…, memory_limit=…),HPC 可用 SLURMCluster、KubeCluster 并配合 cluster.scale()/adapt()。
限制与注意:资料未提供收费、价格、平台与效果数据,均暂未提供。常见问题包括 MemoryError(改用 to_parquet/persist)、任务图过大(增大 chunk)、GIL 争用(改用 processes)、map_partitions 缺少 meta、Worker OOM、慢 join(先 set_index)、未实现操作(改用 map_partitions)、仪表盘不可访问(需启动 Client)等。分块目标约 100 MB,过大或过小都会影响性能。