gpt4 book ai didi

azure - 使用 Python 从 Synapse 笔记本执行无服务器 SQL 池外部表/ View

转载 作者:行者123 更新时间:2023-12-03 03:23:05 25 4
gpt4 key购买 nike

我有一个无服务器 SQL 池,其中包含针对 ADLS Gen2 parquet 文件写入的外部表/ View 。

我想使用 python 从 synapse 笔记本调用外部表/ View 。

仅供引用。无服务器 SQL 池标识是 Azure Active Directory。

您能否告诉我如何实现这一目标。

Using Scala it is working the below code. Need same in the python using active directory authentication.

// Define connection:
Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver")

val hostname = "demo-da-synapse-test-ondemand.sql.azuresynapse.net"
val port = 1433
val database = "Demo" // If needed, change the database
val jdbcUrl = s"jdbc:sqlserver://${hostname}:${port};database=${database}"

// Define connection properties:
import java.util.Properties

val props = new Properties()
props.put("user", "testuser")
props.put("password", "test202XXX!")

// Assign driver to connection:
val driverClass = "com.microsoft.sqlserver.jdbc.SQLServerDriver"
props.setProperty("Driver", driverClass)

val tsqlQuery ="select top 100 * from [demo].[tblEmp]"

val df = spark.read.jdbc(jdbcUrl, s"(${tsqlQuery}) res", props)

df.show(10)


谢谢你,阳光明媚

最佳答案

通过 Azure AD 身份验证将无服务器 SQL 池与 Synapse python 笔记本连接。您需要在 Spark 池上安装 ADAL4j 库。

您可以从 here 下载 ADAL4j 库

下载后解压并上传到工作区

Goto Manage >> Workspace packages >> Upload >>select jar files you downloaded.

enter image description here

然后将此包添加到您的 Spark 池中,如下所示。

Go to Manage >> Apache Spark pool >> 3 dots beside saprk pool name >> packages.

enter image description here

单击“从工作区包中选择”:

enter image description here

选择所有包并单击“应用更改”。

enter image description here

然后在你的突触笔记本中尝试以下代码:

jdbcHostname = "servername-ondemand.sql.azuresynapse.net"
jdbcDatabase = "dbname"
jdbcPort = "1433"
username = "Adusername"
password = "AD password"
jdbcUrl = "jdbc:sqlserver://{0}:{1};database={2};encrypt=true;trustServerCertificate=false;hostNameInCertificate=*.sql.azuresynapse.net;loginTimeout=30;authentication=ActiveDirectoryPassword".format(jdbcHostname, jdbcPort, jdbcDatabase)
connectionProperties = {
"user" : username,
"password" : password,
"driver" : "com.microsoft.sqlserver.jdbc.SQLServerDriver"
}
pushdown_query = "select * from ext1"
df = spark.read.jdbc(url=jdbcUrl, table=pushdown_query, properties=connectionProperties)
display(df)

如果您收到任何身份验证错误错误代码请确保通过访问 > Azure Active Directory > 安全 > 安全默认值 > 禁用来禁用安全默认值

如果禁用安全默认值后错误仍然存​​在,通过访问 > Azure Active Directory > 安全 > 条件访问 > 删除策略来检查是否有 MFA 或任何应用于用户的条件访问策略或排除用户来自政策。

关于azure - 使用 Python 从 Synapse 笔记本执行无服务器 SQL 池外部表/ View ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/76436455/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com