如何为Databricks交互式集群配置自定义成本追踪标签?
问题:ADF配置Databricks交互式集群自定义标签失败
我正在实施自定义标签以追踪Databricks作业的成本,已通过修改ADF JSON管道成功为作业集群添加标签,但在为交互式集群添加标签时遇到困难。尝试了下述配置方式,能看到组织强制的默认标签,但自定义标签未显示,以下是我使用的JSON Schema:
{ "name": "Testing", "type": "DatabricksNotebook", "dependsOn": [], "policy": { "timeout": "0.12:00:00", "retry": 0, "retryIntervalInSeconds": 30, "secureOutput": false, "secureInput": false }, "userProperties": [], "typeProperties": { "notebookPath": "/test/DB_test", "baseParameters": { "Team": "Football" } }, "linkedServiceName": { "referenceName": "linkedserver_databricks", "type": "LinkedServiceReference" }, "parameters": { "Team": "Cricket" } }
解决方法
- 交互式集群的标签无法直接在ADF Notebook活动的当前配置中设置,需通过以下几种方式实现:
Databricks集群策略配置
在Databricks控制台的集群策略中添加标签规则,策略JSON示例:{ "custom_tags": { "Team": "Cricket" } }所有使用该策略创建的交互式集群会自动应用此自定义标签,若需动态值,可使用策略变量(如
{{workspace.current_user.attributes.team}})。ADF链接服务配置
修改Databricks链接服务的JSON定义,在typeProperties中添加customTags字段:"typeProperties": { "domain": "your-databricks-instance.databricks.azure.cn", "authentication": "MSI", "customTags": { "Team": "Cricket" } }此方式会让该链接服务关联的所有交互式集群统一带上标签,若需动态参数,可结合ADF管道参数传递。
Notebook内动态设置(适合按需调整)
在Notebook中通过Databricks API更新当前集群标签,Python代码示例:import requests import os cluster_id = os.environ.get("DB_CLUSTER_ID") api_url = f"{os.environ.get('DATABRICKS_HOST')}/api/2.0/clusters/edit" headers = {"Authorization": f"Bearer {os.environ.get('DATABRICKS_TOKEN')}"} payload = { "cluster_id": cluster_id, "custom_tags": { "Team": dbutils.widgets.get("Team") } } response = requests.post(api_url, json=payload, headers=headers) response.raise_for_status()这样可利用ADF传递的
Team参数动态设置标签。
内容的提问来源于stack exchange,提问作者DevOps
相关产品推荐
相关产品推荐

