如何在Synapse Notebook活动中用Python连接Azure Data Factory链接服务?
在Synapse Notebook中用Python连接ADF Linked Service的可行方案
1. 使用Azure管理Python SDK操作ADF Linked Service
可以通过azure-mgmt-datafactory包结合身份认证库来获取ADF中已创建的Linked Service信息,步骤如下:
- 先安装依赖包:
pip install azure-mgmt-datafactory azure-identity - 示例代码(以托管身份认证为例):
from azure.identity import DefaultAzureCredential from azure.mgmt.datafactory import DataFactoryManagementClient # 配置基础信息 subscription_id = "你的订阅ID" resource_group = "资源组名称" adf_name = "ADF工厂名称" ls_name = "目标Linked Service名称" # 初始化ADF管理客户端 credential = DefaultAzureCredential() adf_client = DataFactoryManagementClient(credential, subscription_id) # 获取Linked Service详情 linked_service = adf_client.linked_services.get(resource_group, adf_name, ls_name) # 根据Linked Service类型提取连接参数 # 示例:针对Azure Blob Storage类型 if linked_service.type == "AzureBlobStorage": conn_str = linked_service.properties.type_properties.connection_string # 后续可使用该连接字符串结合azure-storage-blob包操作存储
2. 直接复用Linked Service的数据源连接信息
如果目标是连接Linked Service指向的数据源,更高效的方式是提取Linked Service中的连接参数,直接在Notebook中连接数据源:
- 示例:连接ADF中配置的Azure SQL数据库
你可以从ADF门户的Linked Service配置页直接复制对应的连接参数,或者通过上述SDK代码自动提取。from pyspark.sql import SparkSession spark = SparkSession.builder.getOrCreate() df = spark.read \ .format("jdbc") \ .option("url", "从ADF Linked Service中提取的JDBC URL") \ .option("dbtable", "目标表名") \ .option("user", "数据库用户名") \ .option("password", "数据库密码") \ .load()
关键注意事项
- 确保Synapse工作区的托管标识/服务主体拥有ADF的
Data Factory Reader或更高权限,才能读取Linked Service信息。 - 不同类型的数据源需要对应Python包支持,比如操作Blob Storage用
azure-storage-blob,操作SQL数据库用pyodbc或Spark JDBC。
内容的提问来源于stack exchange,提问作者sac
相关产品推荐
相关产品推荐

