用途:Dask 为 Python 提供分布式计算能力,API 与 NumPy、Pandas、Scikit-learn 相近,适合处理单机或多节点集群上超出内存的数据。
主要能力:Dask DataFrame 支持惰性读取多文件 CSV/Parquet 并并行聚合;Dask Array 支持分块多维数组运算;dask.delayed 可将任意 Python 函数与循环并行化为任务图;Distributed Futures 适合不规则并行任务;可与 Scikit-learn、XGBoost、LightGBM 集成做分布式机器学习。
使用方式:用 dd.read_csv 或 dd.read_parquet 惰性加载数据,构建过滤、groupby 等计算图后调用 .compute() 执行;用 Client(n_workers=4, threads_per_worker=2, memory_limit='4GB') 启动本地集群,仪表盘默认在 8787 端口;用 @delayed 装饰函数并用 compute 触发;用 client.submit 与 client.gather 处理 Futures。
适用场景:10GB 至 1TB 的表格计算、自定义 Python 工作流并行化、分布式机器学习、NumPy/Pandas 规模扩展。
限制与建议:数据能放入内存时优先用 Pandas 或 Polars;避免在循环中调用 .compute(),应构建完整任务图后一次计算;分块内存建议 100MB 至 300MB;避免创建数百万微小任务;重复查询可用 persist();尽早做列投影与谓词下推。常见问题包括 Worker 内存超限(可增加分区数)、向 Worker 发送大对象(可先用 client.scatter)、任务过小导致调度变慢(可合并分区)。