我设置了一个启用了 Unity Catalog 的 Databricks 实例。我已设置系统分配的托管标识 Databricks 访问连接器,并将访问连接器分配给
Storage Blob Data Contributor
角色。一切工作正常,我将存储帐户设置为 Unity Catalog 上的外部位置,并且能够读取/写入数据。
决定创建一个虚拟机跳转箱,以提高存储帐户内底层数据访问的安全性(只有选定的用户可以通过虚拟机访问存储帐户)。我创建了一个带有子网和
Microsoft.Storage
服务端点的 VNET。然后,我将存储帐户上的网络设置从 'Enable from all networks'
更改为 'Enabled from selected virtual networks and IP addresses'
。我将 VNET、Databricks Access Connector 和 Azure 数据工厂添加到防火墙中的资源实例列表中(设置为 .
我能够从 VM 内很好地连接和访问容器中的数据,我还能够使用 Azure 数据工厂成功测试与存储帐户的连接。但不幸的是,我无法读取/写入数据到存储帐户。
我收到了 403 错误,并带有指向以下消息的链接:
{
"error": {
"code": "AuthenticationFailed",
"message": "Server failed to authenticate the request. Make sure the value of Authorization header is formed correctly including the signature.\nRequestId:1d66f454-a01f-0045-599f-2bea5e000000\nTime:2024-10-31T14:13:32.0426358Z"
}
}
我尝试解决这个问题的事情:
Storage Blob Data Contributor
角色 Databricks 相关应用程序的所有相关系统分配的托管标识(访问连接器、实际的 databrickapp、Databricks 资源提供程序、AzureDatabricks 等)- 相同的错误。希望这些托管身份之一能够提供身份验证(根据我的理解,这是来自访问连接器 - 但我必须通过尝试所有这些身份来确定) 2. 尝试将 Azure Databricks 的所有相关服务标签 IP 列入白名单 - 相同错误 我想也许将 IP 列入白名单可以设法绕过防火墙规则。
我对 azure 上的 databricks 比较陌生 - 不确定我忽略了什么。之前有其他人遇到过这个问题吗?
我试图尽可能避免使用私有端点,并尝试通过白名单来解决此问题。
错误:命令“g++”失败:没有这样的文件或目录[输出结束] 注意:此错误源自子进程,并且可能不是 点的问题。错误:pyodbc 构建轮子失败
安装
pyodbc
时会发生错误,因此系统没有构建 pyodbc 所需的编译器 (g++)。
我同意@Pratik Lad 的评论,
您可以尝试以下方法:
pyodbc 需要 unixODBC 驱动程序管理器,您可以使用以下命令安装它们:
!apt install unixodbc-dev
!pip install pyodbc
结果:
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
unixodbc-dev is already the newest version (2.3.9-5ubuntu0.1).
0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.
Requirement already satisfied: pyodbc in /databricks/python3/lib/python3.11/site-packages (4.0.38)
Note: you may need to restart the kernel using %restart_python or dbutils.library.restartPython() to use updated packages.