在 spark 集群配置数据块中参数化 azure 存储帐户名称

parameterize azure storage account name in spark cluster config databricks

想知道这是否是在 Databricks 的 spark 集群配置中参数化 azure 存储帐户名称部分?

我有一个工作示例,其中值引用秘密范围:

spark.hadoop.fs.azure.account.oauth2.client.id.<azurestorageaccountname>.dfs.core.windows.net {{secrets/keyvault_secret_scope/sp-id}}
spark.hadoop.fs.azure.account.oauth.provider.type.<azurestorageaccountname>.dfs.core.windows.net org.apache.hadoop.fs.azurebfs.oauth2.ClientCredsTokenProvider
spark.hadoop.fs.azure.account.oauth2.client.endpoint.<azurestorageaccountname>.dfs.core.windows.net https://login.microsoftonline.com/05646f53-5e81-4a6a-85f5-a1ee2189bea4/oauth2/token
spark.hadoop.fs.azure.account.auth.type.<azurestorageaccountname>.dfs.core.windows.net OAuth
spark.hadoop.fs.azure.account.oauth2.client.secret.<azurestorageaccountname>.dfs.core.windows.net {{secrets/keyvault_secret_scope/sp-secret}}

但是如果我在按键上尝试这不起作用:

spark.hadoop.fs.azure.account.oauth2.client.id.{{secrets/keyvault_secret_scope/azurestorageaccountname}}.dfs.core.windows.net {{secrets/keyvault_secret_scope/sp-id}}
spark.hadoop.fs.azure.account.oauth.provider.type.{{secrets/keyvault_secret_scope/azurestorageaccountname}}.dfs.core.windows.net org.apache.hadoop.fs.azurebfs.oauth2.ClientCredsTokenProvider
spark.hadoop.fs.azure.account.oauth2.client.endpoint.{{secrets/keyvault_secret_scope/azurestorageaccountname}}.dfs.core.windows.net https://login.microsoftonline.com/05646f53-5e81-4a6a-85f5-a1ee2189bea4/oauth2/token
spark.hadoop.fs.azure.account.auth.type.{{secrets/keyvault_secret_scope/azurestorageaccountname}}.dfs.core.windows.net OAuth
spark.hadoop.fs.azure.account.oauth2.client.secret.{{secrets/keyvault_secret_scope/azurestorageaccountname}}.dfs.core.windows.net {{secrets/keyvault_secret_scope/sp-secret}}

如果不可能,您如何在环境之间替换集群配置?我需要在 DEV 和 PROD 中使用不同的 Azure 存储帐户名称。

如果配置特定的存储帐户不是必须具备的要求,那么您可以尝试执行以下操作。在我的例子中,我有一个服务主体可以访问多个存储帐户,我的 Data Brick 集群配置如下所示以使用 oAuth2。我正在使用 AKV 来存储我的 ClientId 和 Secret 以及一个秘密范围。我还注意到您在差异环境中提到了不同的存储帐户名称。这将自动处理,因为您没有定义特定的 SA,但无论哪个 SA 具有适当的权限,您的集群都会尊重它。 如果它没有帮助请原谅,因为这是我第一次 post 在这里。

fs.azure.account.auth.type OAuth fs.azure.account.oauth.provider.type org.apache.hadoop.fs.azurebfs.oauth2.ClientCredsTokenProvider fs.azure.account.oauth2.client.id {{secrets/akv-xx-xx-db2akv-scope/akv-ak-databricks-clientid}} fs.azure.account.oauth2.client.secret {{secrets/akv-xx-xx-db2akv-scope/akv-ak-databricks-secret}} fs.azure.account.oauth2.client.endpoint https://login.microsoftonline.com/xxxxxx/oauth2/token