[ PROMPT_NODE_26414 ]
dask
[ SKILL_DOCUMENTATION ]
# Dask
## 概述
Dask 是一个用于并行和分布式计算的 Python 库,实现了三个关键能力:
- **超内存执行**:在单机上处理超出可用内存(RAM)的数据
- **并行处理**:跨多个核心提高计算速度
- **分布式计算**:支持跨多台机器处理 TB 级数据集
Dask 可以从笔记本电脑(处理约 100 GiB)扩展到集群(处理约 100 TiB),同时保持熟悉的 Python API。
## 何时使用此技能
当出现以下情况时,应使用此技能:
- 处理超出可用内存的数据集
- 将 pandas 或 NumPy 操作扩展到更大的数据集
- 并行化计算以提升性能
- 高效处理多个文件(CSV、Parquet、JSON、文本日志)
- 构建具有任务依赖关系的自定义并行工作流
- 将工作负载分配到多个核心或机器上
## 核心能力
Dask 提供五个主要组件,每个组件适用于不同的用例:
### 1. DataFrames - 并行 Pandas 操作
**目的**:通过并行处理将 pandas 操作扩展到更大的数据集。
**何时使用**:
- 表格数据超出可用内存
- 需要同时处理多个 CSV/Parquet 文件
- Pandas 操作缓慢且需要并行化
- 从 pandas 原型扩展到生产环境
**参考文档**:有关 Dask DataFrames 的全面指南,请参阅 `references/dataframes.md`,其中包括:
- 读取数据(单个文件、多个文件、glob 模式)
- 常见操作(过滤、分组、连接、聚合)
- 使用 `map_partitions` 进行自定义操作
- 性能优化技巧
- 常见模式(ETL、时间序列、多文件处理)
**快速示例**:
python
import dask.dataframe as dd
# 将多个文件读取为单个 DataFrame
ddf = dd.read_csv('data/2024-*.csv')
# 操作是惰性的,直到调用 compute()
filtered = ddf[ddf['value'] > 100]
result = filtered.groupby('category').mean().compute()
**关键点**:
- 操作是惰性的(构建任务图),直到调用 `.compute()`
- 使用 `map_partitions` 进行高效的自定义操作
- 当处理来自其他来源的结构化数据时,尽早转换为 DataFrame
### 2. Arrays - 并行 NumPy 操作
**目的**:使用分块算法将 NumPy 的能力扩展到超出内存限制的数据集。
**何时使用**:
- 数组超出可用内存
- NumPy 操作需要并行化
- 处理科学数据集(HDF5, Zarr, Ne