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"))
相关推荐
字节跳动数据平台3 小时前
5000 字技术向拆解 | 火山引擎多模态数据湖如何释放模思智能的算法生产力
大数据
zone77396 小时前
001:简单 RAG 入门
后端·python·面试
F_Quant6 小时前
🚀 Python打包踩坑指南:彻底解决 Nuitka --onefile 配置文件丢失与重启报错问题
python·操作系统
允许部分打工人先富起来7 小时前
在node项目中执行python脚本
前端·python·node.js
IVEN_7 小时前
Python OpenCV: RGB三色识别的最佳工程实践
python·opencv
haosend8 小时前
AI时代,传统网络运维人员的转型指南
python·数据网络·网络自动化
曲幽8 小时前
不止于JWT:用FastAPI的Depends实现细粒度权限控制
python·fastapi·web·jwt·rbac·permission·depends·abac
武子康8 小时前
大数据-239 离线数仓 - 广告业务实战:Flume 导入日志到 HDFS,并完成 Hive ODS/DWD 分层加载
大数据·后端·apache hive
IVEN_1 天前
只会Python皮毛?深入理解这几点,轻松进阶全栈开发
python·全栈
Ray Liang1 天前
用六边形架构与整洁架构对比是伪命题?
java·python·c#·架构设计