如何通过代码将Synapse已发布SQL文件导出至沙箱或通过Notebook访问?
Synapse已发布SQL文件导出与Notebook访问方案
一、无需管道,通过代码导出已发布SQL文件到沙箱环境
可以直接通过Azure Synapse Management SDK或Synapse REST API实现,无需依赖Synapse管道。以下是Python SDK的实操示例:
- 先安装依赖包:
pip install azure-mgmt-synapse azure-identity
- 编写代码导出已发布SQL脚本:
from azure.identity import DefaultAzureCredential from azure.mgmt.synapse import SynapseManagementClient # 配置参数 subscription_id = "你的订阅ID" resource_group_name = "资源组名称" workspace_name = "源Synapse工作区名称" sql_script_name = "要导出的已发布SQL脚本名称" sandbox_save_path = "沙箱环境的保存路径(如本地路径或沙箱存储账户路径)" # 初始化客户端 credential = DefaultAzureCredential() synapse_client = SynapseManagementClient(credential, subscription_id) # 获取已发布的SQL脚本内容 sql_script = synapse_client.sql_scripts.get( resource_group_name=resource_group_name, workspace_name=workspace_name, sql_script_name=sql_script_name ) # 导出到沙箱环境 with open(sandbox_save_path, "w", encoding="utf-8") as f: f.write(sql_script.content)
说明:这里的已发布SQL脚本指Synapse工作区中Git关联后已发布分支的SQL脚本文件,通过SDK可直接读取内容并写入沙箱目标位置。
二、通过Notebook直接访问已发布SQL文件
可以在Synapse Notebook中直接访问已发布SQL文件,不同语言的实现方式如下:
1. PySpark/SparkSQL
通过Synapse Management SDK读取脚本内容后执行:
from azure.identity import DefaultAzureCredential from azure.mgmt.synapse import SynapseManagementClient # 配置参数 subscription_id = "你的订阅ID" resource_group_name = "资源组名称" workspace_name = "当前Synapse工作区名称" sql_script_name = "目标已发布SQL脚本名称" # 初始化客户端 credential = DefaultAzureCredential() synapse_client = SynapseManagementClient(credential, subscription_id) # 获取SQL脚本内容 sql_script = synapse_client.sql_scripts.get( resource_group_name=resource_group_name, workspace_name=workspace_name, sql_script_name=sql_script_name ) # 执行SQL内容 spark.sql(sql_script.content).show()
2. Scala
使用Azure SDK for Scala读取并执行脚本:
import com.azure.identity.DefaultAzureCredentialBuilder import com.azure.resourcemanager.synapse.SynapseManager // 配置参数 val subscriptionId = "你的订阅ID" val resourceGroupName = "资源组名称" val workspaceName = "当前Synapse工作区名称" val sqlScriptName = "目标已发布SQL脚本名称" // 初始化客户端 val credential = new DefaultAzureCredentialBuilder().build() val synapseManager = SynapseManager.authenticate(credential, subscriptionId) // 获取SQL脚本内容 val sqlScript = synapseManager.sqlScripts().getByWorkspace(resourceGroupName, workspaceName, sqlScriptName) // 执行SQL内容 spark.sql(sqlScript.content()).show()
3. C# (.NET for Apache Spark)
使用Azure .NET SDK读取并执行脚本:
using Azure.Identity; using Azure.ResourceManager.Synapse; // 配置参数 string subscriptionId = "你的订阅ID"; string resourceGroupName = "资源组名称"; string workspaceName = "当前Synapse工作区名称"; string sqlScriptName = "目标已发布SQL脚本名称"; // 初始化客户端 var credential = new DefaultAzureCredential(); var synapseClient = new SynapseManagementClient(credential, subscriptionId); // 获取SQL脚本内容 var sqlScript = await synapseClient.SqlScripts.GetAsync(resourceGroupName, workspaceName, sqlScriptName); // 执行SQL内容 spark.Sql(sqlScript.Value.Content).Show();
内容的提问来源于stack exchange,提问作者ByronSchuurman
相关产品推荐
相关产品推荐

