gpt4 book ai didi

azure-databricks - 使用服务主体从 DataBricks 连接到 Synapse

转载 作者:行者123 更新时间:2023-12-03 20:51:28 27 4
gpt4 key购买 nike

我正在尝试使用服务主体从 Databricks 连接到 Synapse。
我已经在集群配置中配置了服务主体

fs.azure.account.auth.type.<datalake>.dfs.core.windows.net OAuth
fs.azure.account.oauth.provider.type org.apache.hadoop.fs.azurebfs.oauth2.ClientCredsTokenProvider
fs.azure.account.oauth2.client.id <Service Principal ID/Application ID>
fs.azure.account.oauth2.client.secret <Client secret key/Service Principal Password>
fs.azure.account.oauth2.client.endpoint https://login.microsoftonline.com/<tenant-id>/oauth2/token
fs.azure.createRemoteFileSystemDuringInitialization true
虽然我可以成功连接到 DataLake 并工作,但当我使用以下命令时,我无法写入突触...
DummyDF.write.format("com.databricks.spark.sqldw")\
.mode("append")\
.option("url", jdbcUrl)\
.option("useAzureMSI", "true")\
.option("tempDir",tempdir)\
.option("dbTable", "DummyTable").save()
我收到以下错误...
Py4JJavaError: An error occurred while calling o831.save.
: com.databricks.spark.sqldw.SqlDWSideException: SQL DW failed to execute the JDBC query produced by the connector.
Underlying SQLException(s):
com.microsoft.sqlserver.jdbc.SQLServerException: External file access failed due to internal error: 'Error occurred while accessing HDFS: Java exception raised on call to HdfsBridge_IsDirExist. Java exception message:
HdfsBridge::isDirExist - Unexpected error encountered checking whether directory exists or not: AbfsRestOperationException: Operation failed: "This request is not authorized to perform this operation using this permission.", 403, HEAD, https://datalakename.dfs.core.windows.net/temp/2020-06-24/14-21-57-819/88228292-9f00-4da0-b778-d3421ea4d2ec?upn=false&timeout=90' [ErrorCode = 105019] [SQLState = S0001]
但是我可以使用以下命令写入 Synapse...
DummyDF.write.mode("append").jdbc(jdbcUrl,"DummyTable")
我不确定缺少什么。

最佳答案

第二个选项不使用 Polybase,只通过 JDBC,速度较慢。
我认为您的错误与 Databricks 和 SQL DW 库无关,而是与 Synapse 和存储之间的连接。
你能检查一下:

  • 是否通过 Azure 门户在 Azure Synapse 服务器的防火墙面板上将“允许访问 Azure 服务”设置为 ON(请记住,如果你的 Azure Blob 存储仅限于选择虚拟网络,Azure Synapse 需要托管服务标识而不是访问 key )
  • 验证您是否正确指定了 tempDir,用于 blob 存储“wasbs://”+ blobContainer +“@”+ blobStorage +“/tempDirs”或*“abfss://...”* 用于 ADLS Gen 2
  • 您可以直接从 Synapse 使用托管标识为该存储创建外部表吗?

  • 这是一篇涵盖解决与您的 105019 相同的错误代码的文章:
    https://techcommunity.microsoft.com/t5/azure-synapse-analytics/msg-10519-when-attempting-to-access-external-table-via-polybase/ba-p/690641

    关于azure-databricks - 使用服务主体从 DataBricks 连接到 Synapse,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62576749/

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