如何在Data Factory中将参数用于Databricks现有群集ID?

时间:2019-06-12 22:07:18

标签: azure azure-devops azure-data-factory azure-databricks

对于某些背景,我正在开发Azure数据工厂中,在其中我使用生成的ARM模板将其部署到其他测试/产品环境。

我遇到的问题是尝试引用Azure Databricks链接服务中的现有群集ID时。该群集ID传递到不存在该群集的其他帐户中。该链接服务已在多个管道中使用,因此我希望能够在一处对其进行更改。

我希望能够拥有一个可以在Azure DevOps发布管道中覆盖以映射到正确的环境群集的参数。但是,随着Data Factory生成ARM模板,我对此没有太多控制。

这是手臂模板的示例。

"name": "[concat(parameters('factoryName'), '/my-linked-service')]",
"type": "Microsoft.DataFactory/factories/linkedServices",
"apiVersion": "2018-06-01",
"properties": {
    "description": "Databricks connection",
    "parameters": {
        "test": {
            "type": "string"
        }
    },
    "annotations": [],
    "type": "AzureDatabricks",
    "typeProperties": {
        "domain": "https://australiaeast.azuredatabricks.net",
        "accessToken": {
            "type": "AzureKeyVaultSecret",
            "store": {
                "referenceName": "keyName",
                "type": "LinkedServiceReference"
            },
            "secretName": "secretName"
        },
        "existingClusterId": "1234-56789-abc123"
    }

Databricks Linked Service

1 个答案:

答案 0 :(得分:0)

默认情况下,仅某些字段被参数化。但是您可以设置模板以自定义它们。它不是很漂亮-完整的指南在这里:https://docs.microsoft.com/en-us/azure/data-factory/continuous-integration-deployment#use-custom-parameters-with-the-resource-manager-template

对于您的示例,我有一个看起来像这样的模板:

{
    "Microsoft.DataFactory/factories/linkedServices": {
        "*": {
            "properties": {
                "typeProperties": {
                    "existingClusterId": "="
                }
            }
        }
    }
}

该文件必须命名为arm-template-parameters-definition.json并放在存储库的根目录中。