Dask 配置文件加载机制说明

Dask 配置文件加载机制说明

https://docs.dask.org/en/stable/configuration.html

源码位置

Dask 的配置文件解析源码在:

  • 主文件 : dask/config.py
  • 关键函数 :
    • _get_paths() (第21-39行): 定义配置文件搜索路径
    • collect_yaml() (第209-244行): 收集并解析 YAML/JSON 文件
    • collect() (第499-523行): 合并所有配置源
    • refresh() (第526-563行): 加载配置到全局 config 字典
    • _load_config_file() (第175-194行): 实际解析 YAML 文件的函数

默认搜索路径

根据 _get_paths() 函数,Dask 会按顺序搜索以下路径:

  1. DASK_ROOT_CONFIG 环境变量(默认: /etc/dask
  2. sys.prefix/etc/dask(虚拟环境的 etc/dask 目录)
  3. site.PREFIXES 中每个前缀的 etc/dask 目录
  4. ~/.config/dask(用户配置目录)
  5. DASK_CONFIG 环境变量指定的路径(如果设置了)

注意: 项目根目录默认不在搜索路径中!

如何让根目录的配置文件生效

方法1: 使用环境变量(推荐)

设置 DASK_CONFIG 环境变量指向项目根目录或配置文件:

bash 复制代码
# Windows PowerShell
$env:DASK_CONFIG = "D:\prj_py\dask-demo"

# 或者在代码中设置
import os
os.environ["DASK_CONFIG"] = r"D:\prj_py\dask-demo"

方法2: 在代码中手动加载

python 复制代码
import dask.config
import os

# 获取项目根目录
project_root = os.path.dirname(os.path.abspath(__file__))

# 手动刷新配置,包含项目根目录
dask.config.refresh(paths=[project_root])

# 或者直接指定配置文件路径
dask.config.refresh(paths=[os.path.join(project_root, "dask_cluster_config.yaml")])

方法3: 将配置文件放到标准位置

dask_cluster_config.yaml 放到 ~/.config/dask/ 目录:

python 复制代码
import os
import shutil

config_dir = os.path.expanduser("~/.config/dask")
os.makedirs(config_dir, exist_ok=True)
shutil.copy("dask_cluster_config.yaml", config_dir)

配置文件格式

配置文件可以是 YAML 或 JSON 格式,必须是顶层为字典的结构:

yaml 复制代码
# dask_cluster_config.yaml
distributed:
  scheduler:
    dashboard:
      default: :8787
  worker:
    memory:
      target: 0.8
      spill: 0.9
    threads: 4

dataframe:
  shuffle:
    method: p2p

验证配置是否加载

python 复制代码
import dask.config

# 查看所有搜索路径
print("搜索路径:", dask.config.paths)

# 查看当前配置
print("当前配置:", dask.config.config)

# 获取特定配置项
print(dask.config.get("distributed.worker.threads"))
相关推荐
Light602 小时前
破局“数据孤岛”:构建业务、财务、指标三位一体的智能数据模型
java·大数据·开发语言
bj_zhb2 小时前
图片的base64表示
python·llm
飞Link2 小时前
【Django】Django 调用外部 Python 程序的完整指南
后端·python·django·sqlite
半夏知半秋2 小时前
Elasticsearch Query DSL 指令整理
大数据·数据库·笔记·学习·elasticsearch·搜索引擎·全文检索
周杰伦_Jay2 小时前
【Java集合与线程池深度解析】底层原理+实战选型+避坑指南(附代码)
java·开发语言·python
doris6102 小时前
设备点检、保养、维修一站式解决方案
大数据·数据库·人工智能
一人の梅雨2 小时前
淘宝关键字搜索接口深度解析:从动态策略适配到商业数据重构
python·重构
EriccoShaanxi2 小时前
穿越高温地层:加速度计如何成为石油钻井的核心感官
大数据·算法
半夏知半秋2 小时前
Elasticsearch专用的ES|QL语法指令整理
大数据·数据库·elasticsearch·搜索引擎·全文检索