在Azure Databricks笔记本中读取Azure App Configuration密钥的方法及替代方案
Azure Databricks读取Azure App Configuration实现配置化过滤方案
完全可以在Azure Databricks笔记本中读取Azure App Configuration的密钥,以下是具体实现步骤、代码及替代方案:
一、认证前置步骤
- 为Databricks集群启用Azure AD托管身份(生产环境推荐),或准备具备权限的Azure AD服务主体
- 在Azure App Configuration资源的IAM页面,为Databricks的托管身份/服务主体分配App Configuration Data Reader角色,确保拥有密钥读取权限
- 记录App Configuration的端点地址(格式:
https://<资源名称>.azconfig.io),若用连接字符串方式测试,需从"访问密钥"页面获取完整连接字符串
二、PySpark读取代码实现
方式1:Azure AD托管身份认证(生产首选)
from azure.appconfiguration import AzureAppConfigurationClient from azure.identity import DefaultAzureCredential # 替换为你的App Configuration端点 app_config_endpoint = "https://<你的资源名称>.azconfig.io" # 借助托管身份自动完成认证,无需硬编码密钥 credential = DefaultAzureCredential() client = AzureAppConfigurationClient(endpoint=app_config_endpoint, credential=credential) # 读取配置的过滤值列表(假设密钥名为filter_values,配置值用逗号分隔,如"val1,val2,val3") config_item = client.get_configuration_setting(key="filter_values") filter_list = config_item.value.split(",") # 执行数据过滤逻辑 df = spark.read.table("your_source_table") filtered_df = df.filter(df.target_column.isin(filter_list)) filtered_df.display()
方式2:连接字符串认证(快速测试)
from azure.appconfiguration import AzureAppConfigurationClient from azure.core.credentials import AzureKeyCredential # 替换为你的App Configuration连接字符串 connection_string = "<完整连接字符串>" # 从连接字符串中提取密钥 access_key = connection_string.split(";")[1].split("=")[1] credential = AzureKeyCredential(access_key) client = AzureAppConfigurationClient( base_url="https://<你的资源名称>.azconfig.io", credential=credential ) # 读取过滤列表并执行过滤 config_item = client.get_configuration_setting(key="filter_values") filter_list = config_item.value.split(",") df = spark.read.table("your_source_table") filtered_df = df.filter(df.target_column.isin(filter_list)) filtered_df.display()
注意:若集群所在VNet有网络限制,需配置防火墙规则允许访问App Configuration的端点。
三、替代实现方案
如果不采用Azure App Configuration,可选择以下轻量配置化方案:
- Databricks工作区全局变量:在工作区设置中配置全局变量,笔记本通过
dbutils.widgets.get()读取,支持人员直接在工作区修改 - Azure存储账户(Blob/ADLS):将过滤列表保存为JSON/CSV文件存储在Blob/ADLS中,笔记本通过挂载存储或直接读取文件获取配置,支持人员通过Storage Explorer修改文件
- Databricks Secret Scope:若配置需保密,将过滤列表存入Secret Scope,笔记本通过
dbutils.secrets.get(scope="你的作用域", key="filter_values")读取,授权支持人员修改密钥
内容的提问来源于stack exchange,提问作者Ram
相关产品推荐
相关产品推荐

