如何为特定模型的dbt测试指定Databricks专属集群?
为特定dbt模型的测试配置专属集群解决方案
当然可以实现为特定模型测试配置专属集群的需求,不用切换多个配置文件,以下是几种直接可行的方案:
1. 模型级别直接指定测试集群
你可以在模型的配置中直接为测试任务绑定专属集群,支持两种配置方式:
方式A:在模型SQL文件内配置
打开models/a_big_model.sql,在config块中为该模型的所有测试指定集群:
{{ config( tests=[ {'name': 'not_null', 'config': {'cluster': 'large_test_cluster'}}, {'name': 'unique', 'config': {'cluster': 'large_test_cluster'}} ] ) }} select * from ...
方式B:在dbt_project.yml中批量配置
如果不想修改模型文件,可在项目配置文件中针对该模型统一设置测试集群:
models: your_project_name: a_big_model: +tests: +cluster: large_test_cluster
执行dbt test --select a_big_model时,dbt会自动使用large_test_cluster运行测试,而dbt debug等通用命令仍沿用默认的all_purpose_cluster。
2. 结合变量实现灵活集群切换
如果需要更灵活的集群控制(比如临时切换测试集群),可以通过变量实现:
- 先在
dbt_project.yml中定义默认测试集群变量:
vars: test_cluster: 'all_purpose_cluster'
- 在模型测试配置中引用该变量:
models: your_project_name: a_big_model: +tests: +cluster: "{{ var('test_cluster') }}"
- 运行时通过命令行参数覆盖变量:
- 通用测试用默认集群:
dbt test - 大模型测试用专属集群:
dbt test --select a_big_model --vars '{"test_cluster": "large_test_cluster"}'
关于submission_method的可行性说明
如果你使用的是Databricks环境,submission_method确实可以结合集群配置使用。你可以在dbt_project.yml中为大模型测试指定用job cluster而非默认的all-purpose cluster:
models: your_project_name: a_big_model: +tests: +submission_method: 'job_cluster' +job_cluster_config: job_cluster_key: 'large_test_job_cluster'
前提是你已经在profiles.yml的Databricks连接配置中定义了对应的job_cluster_config,这样测试时会自动启动专属的job集群,避免占用通用集群资源。
内容的提问来源于stack exchange,提问作者Yaakov Bressler
相关产品推荐
相关产品推荐

