创建和使用托管专用终结点
拥有 Microsoft Fabric 工作区管理员权限的用户可通过工作区设置,从 Fabric 门户创建、查看和删除托管专用终结点。
用户还可以从工作区设置的网络安全部分,监视托管专用终结点的状态和审批过程。
用户可使用 Fabric Spark 工作负载中的专用终结点名称访问数据源。
创建托管专用终结点
在 Fabric 工作区中,导航到工作区设置,选择“网络安全”选项卡,然后选择“托管专用终结点”部分的“创建”选项。
此时会打开“创建托管专用终结点”对话框。
指定专用终结点的名称并复制 Azure 资源的资源标识符。 可以在 Azure 门户页上的属性选项卡中找到资源标识符。
注意
不支持创建具有完全限定域名 (FQDN) 的托管专用终结点。
完成后,选择“创建”。
预配托管专用终结点后,激活状态将更改为“成功”。
此外,专用终结点访问请求将发送到数据源。 数据源管理员在其数据源的 Azure 门户资源页面上收到通知。 他们在那里将看到包含请求消息的挂起访问请求。
以 SQL Server 为例,用户可以导航到 Azure 门户,并搜索“SQL Server”资源。
在“资源”页面上,从导航菜单中选择“网络”,然后选择“专用访问”选项卡。
数据源管理员应能查看活动专用终结点连接和新连接请求。
管理员可以通过提供业务理由进行批准或拒绝。
数据源管理员批准或拒绝请求后,“Fabric 工作区设置”页面会在刷新后更新状态。
当状态更改为“已批准”时,终结点可用于笔记本或 Spark 作业定义,以便从 Fabric 工作区访问数据源中存储的数据。
可在 Fabric 中使用托管专用终结点
Microsoft Fabric 笔记本支持使用托管专用终结点与安全网络后面的数据源进行无缝交互,以便进行数据浏览和处理。 在笔记本中,用户可用各种文件格式快速读取受保护的数据源(并将数据写回其湖屋)。
本指南提供了代码示例,帮助你开始在自己的笔记本中,通过托管专用终结点访问来自数据源(例如 SQL DB)的数据。
先决条件
访问数据源。 本示例介绍 Azure SQL Server 和 Azure SQL 数据库。
登录到 Microsoft Fabric 和 Azure 门户。
导航到 Azure 门户中的 Azure SQL Server 资源页面,然后选择“属性”菜单。 复制要从 Microsoft Fabric 连接的 SQL Server 的资源 ID。
SQL Server 的数据源管理员批准新的专用终结点连接请求后,你应能使用新创建的托管专用终结点。
从笔记本连接到数据源
在 Microsoft Fabric 工作区,使用主页左侧的体验切换器切换到 Synapse 数据工程体验。
选择“创建”,创建新的笔记本。
现在,在笔记本中,通过指定 SQL 数据库的名称及其连接属性,你可以通过已设置的托管专用终结点连接进行连接,以读取数据库中的表,并将其写入 Microsoft Fabric 中的湖屋。
以下 PySpark 代码片段演示如何连接到 SQL 数据库。
serverName = "<server_name>.database.windows.net"
database = "<database_name>"
dbPort = 1433
dbUserName = "<username>"
dbPassword = “<db password> or reference based on Keyvault>”
from pyspark.sql import SparkSession
spark = SparkSession.builder \
.appName("Example") \
.config("spark.jars.packages", "com.microsoft.azure:azure-sqldb-spark:1.0.2") \
.config("spark.sql.catalogImplementation", "com.microsoft.azure.synapse.spark") \
.config("spark.sql.catalog.testDB", "com.microsoft.azure.synapse.spark") \
.config("spark.sql.catalog.testDB.spark.synapse.linkedServiceName", "AzureSqlDatabase") \ .config("spark.sql.catalog.testDB.spark.synapse.linkedServiceName.connectionString", f"jdbc:sqlserver://{serverName}:{dbPort};database={database};user={dbUserName};password={dbPassword}") \ .getOrCreate()
jdbcURL = "jdbc:sqlserver://{0}:{1};database={2}".format(serverName,dbPort,database)
connection = {"user":dbUserName,"password":dbPassword,"driver": "com.microsoft.sqlserver.jdbc.SQLServerDriver"}
df = spark.read.jdbc(url=jdbcURL, table = "dbo.Employee", properties=connection)
df.show()
display(df)
# Write the dataframe as a delta table in your lakehouse
df.write.mode("overwrite").format("delta").saveAsTable("Employee")
# You can also specify a custom path for the table location
# df.write.mode("overwrite").format("delta").option("path", "abfss://yourlakehouse.dfs.core.windows.net/Employee").saveAsTable("Employee")
建立连接后,下一步是创建一个数据帧来读取 SQL 数据库中的表。
支持的数据源
Microsoft Fabric 支持使用托管专用终结点连接到超过 26 个数据源。 用户需要指定资源标识符,可以在 Azure 门户数据源的“属性设置”页面中找到该标识符。 确保遵循资源 ID 格式,如下表所示。
服务 | 资源 ID 格式 |
---|---|
认知服务 | /subscriptions/{subscription-id}/resourceGroups/{resource-group-name}/providers/Microsoft.CognitiveServices/accounts/{resource-name} |
Azure Databricks | /subscriptions/{subscription-id}/resourceGroups/{resource-group-name}/providers/Microsoft.Databricks/workspaces/{workspace-name} |
Azure Database for MariaDB | /subscriptions/{subscription-id}/resourceGroups/{resource-group-name}/providers/Microsoft.DBforMariaDB/servers/{server-name} |
Azure Database for MySQL | /subscriptions/{subscription-id}/resourceGroups/{resource-group-name}/providers/Microsoft.DBforMySQL/servers/{server-name} |
Azure Database for PostgreSQL | /subscriptions/{subscription-id}/resourceGroups/{resource-group-name}/providers/Microsoft.DBforPostgreSQL/flexibleServers/{server-name} |
Azure Cosmos DB for MongoDB | /subscriptions/{subscription-id}/resourceGroups/{resource-group-name}/providers/Microsoft.DocumentDB/databaseAccounts/{account-name} |
Azure Cosmos DB for NoSQL | /subscriptions/{subscription-id}/resourceGroups/{resource-group-name}/providers/Microsoft.DocumentDB/databaseAccounts/{account-name} |
Azure Monitor 专用链接范围 | /subscriptions/{subscription-id}/resourceGroups/{resource-group-name}/providers/Microsoft.Insights/privateLinkScopes/{scope-name} |
Azure Key Vault | /subscriptions/{subscription-id}/resourceGroups/{resource-group-name}/providers/Microsoft.KeyVault/vaults/{vault-name} |
Azure 数据资源管理器 (Kusto) | /subscriptions/{subscription-id}/resourceGroups/{resource-group-name}/providers/Microsoft.Kusto/clusters/{cluster-name} |
Azure 机器学习 | /subscriptions/{subscription-id}/resourceGroups/{resource-group-name}/providers/Microsoft.MachineLearningServices/workspaces/{workspace-name} |
Microsoft Purview | /subscriptions/{subscription-id}/resourceGroups/{resource-group-name}/providers/Microsoft.Purview/accounts/{account-name} |
Azure 搜索 | /subscriptions/{subscription-id}/resourceGroups/{resource-group-name}/providers/Microsoft.Search/searchServices/{service-name} |
Azure SQL 数据库 | /subscriptions/{subscription-id}/resourceGroups/{resource-group-name}/providers/Microsoft.Sql/servers/{server-name} |
Azure SQL 数据库(Azure SQL 托管实例) | /subscriptions/{subscription-id}/resourceGroups/{resource-group-name}/providers/Microsoft.Sql/managedInstances/{instance-name} |
Azure Blob 存储 | /subscriptions/{subscription-id}/resourceGroups/{resource-group-name}/providers/Microsoft.Storage/storageAccounts/{storage-account-name} |
Azure Data Lake Storage Gen2 | /subscriptions/{subscription-id}/resourceGroups/{resource-group-name}/providers/Microsoft.Storage/storageAccounts/{storage-account-name} |
Azure 文件存储 | /subscriptions/{subscription-id}/resourceGroups/{resource-group-name}/providers/Microsoft.Storage/storageAccounts/{storage-account-name} |
Azure 队列存储 | /subscriptions/{subscription-id}/resourceGroups/{resource-group-name}/providers/Microsoft.Storage/storageAccounts/{storage-account-name} |
Azure 表存储 | /subscriptions/{subscription-id}/resourceGroups/{resource-group-name}/providers/Microsoft.Storage/storageAccounts/{storage-account-name} |
Azure Synapse Analytics | /subscriptions/{subscription-id}/resourceGroups/{resource-group-name}/providers/Microsoft.Synapse/workspaces/{workspace-name} |
Azure Synapse Analytics(项目) | /subscriptions/{subscription-id}/resourceGroups/{resource-group-name}/providers/Microsoft.Synapse/workspaces/{workspace-name} |
Azure Functions | /subscriptions/{subscription-id}/resourceGroups/{resource-group-name}/providers/Microsoft.Web/sites/{function-app-name} |
Azure 事件中心 | /subscriptions/{subscription-id}/resourcegroups/{resource-group-name}/providers/Microsoft.EventHub/namespaces/{namespace-name} |
Azure IoT 中心 | /subscriptions/{subscription-id}/resourceGroups/{resource-group-name}/providers/Microsoft.Devices/IotHubs/{iothub-name} |