在 Synapse Analytics 中创建了到 Azure SQL 数据库的链接服务,该服务使用身份验证类型“ 系统分配的托管身份”。而不是在 PySpark Notebook 中引用它。方法 getConnectionString 用于获取访问令牌。
但它失败并出现错误 Message=Missing required property 'connectionstring' on AzureSqlLinkedservice
以下是代码和错误消息详细信息
代码:
jdbcUrl = "jdbc:sqlserver://my_server_name.database.windows.net:1433;database=my_db_name;encrypt=true;trustServerCertificate=false;hostNameInCertificate=*.database.windows.net;loginTimeout=30"
token=TokenLibrary.getConnectionString("AzureSQLLinkedServiceName")
pushdown_query = "(SELECT col1 FROM my_table_name) as tbl"connectionProperties = {
"driver" : "com.microsoft.sqlserver.jdbc.SQLServerDriver",
"accessToken" : token
}
df = spark.read.jdbc(url=jdbcUrl, table=pushdown_query, properties=connectionProperties)
display(df)
错误:
Py4JJavaError:调用 z:com.microsoft.azure.synapse.tokenlibrary.TokenLibrary.getConnectionString 时发生错误。 :com.microsoft.azure.synapse.tokenlibrary.TokenServiceClientResponseStatusException:令牌服务返回“客户端错误”(400),消息:{“result”:“DependencyError”,“errorId”:“BadRequest”,“errorMessage”:“[代码 = 400,目标 = AzureSqllinkedservice,消息 = AzureSqllinkedservice 上缺少必需的属性“连接字符串”]。错误成分:LSR”}
您面临的错误是因为您正在使用不正确的配置创建链接服务,要在创建链接服务时解决该问题,您必须选择
version
作为 Legacy 并且 Authentication
应该是 系统分配的托管身份。
执行: