Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
本页介绍如何设置 Lakehouse 联邦,以便对未由 Azure Databricks 管理的 SQL Server 数据运行联合查询。 若要了解有关 Lakehouse 联合的更多信息,请参阅 什么是 Lakehouse 联合?
若要使用 Lakehouse 联合身份验证连接到SQL Server数据库,必须在 Azure Databricks Unity 目录元存储中创建以下内容(2023 年 11 月 9 日之后创建的工作区已自动预配 Unity 目录元存储):
- 连接到SQL Server数据库。
- 外部目录,它在 Unity Catalog 中镜像 SQL Server 数据库,使您可以使用 Unity Catalog 的查询语法和数据治理工具来管理 Azure Databricks 用户对该数据库的访问。
Lakehouse Federation 支持SQL Server、Azure SQL Database和Azure SQL Managed Instance。
开始之前
工作区要求:
- 已为 Unity Catalog 启用工作区。 2023年11月9日之后创建的工作区会自动启用Unity Catalog,包括自动配置元存储。 若您的工作区在自动启用功能推出之前创建且尚未启用 Unity Catalog,则需要手动创建元存储。 请参阅 Unity Catalog 的自动启用。
计算要求:
- 计算资源与目标数据库系统之间的网络连接。 请参阅 Lakehouse Federation 网络建议。
- Azure Databricks计算必须使用 Databricks Runtime 13.3 LTS 或更高版本以及 Standard 或 Dedicated 访问模式。
- SQL 仓库必须是专业或无服务器,并且必须使用 2023.40 或更高版本。
所需的权限:
- 若要创建连接,你必须是元存储管理员或对附加到工作区的 Unity Catalog 元存储具有
CREATE CONNECTION权限的用户。 在自动为 Unity 目录启用的工作区中,工作区管理员默认具有CREATE CONNECTION权限。 - 若要创建外部目录,必须对元存储具有
CREATE CATALOG权限,并且是连接的所有者或对连接具有CREATE FOREIGN CATALOG特权。 在自动为 Unity 目录启用的工作区中,工作区管理员默认具有CREATE CATALOG权限。
后面每个基于任务的部分都指定了其他权限要求。
- 如果计划使用 Microsoft Entra ID 进行身份验证到 SQL Server,请在 为 SQL Server 联邦配置 Microsoft Entra ID中完成设置。
创建连接
连接指定用于访问外部数据库系统的路径和凭据。 若要创建连接,可以在Azure Databricks笔记本或 Databricks SQL 查询编辑器中使用目录资源管理器或 CREATE CONNECTION SQL 命令。
注意
你还可以使用 Databricks REST API 或 Databricks CLI 来创建连接。 请参阅 POST /api/2.1/unity-catalog/connections 和 Unity Catalog 命令。
所需的权限:具有 CREATE CONNECTION 特权的元存储管理员或用户。
目录浏览器
在Azure Databricks工作区中,单击
Catalog。
在目录窗格顶部,单击
,然后从菜单中选择创建连接。在“设置连接”向导的“连接基本信息”页面上,输入用户友好的连接名称。
选择 连接类型 为 SQL Server。
选择 OAuth、OAuth 计算机到计算机的身份验证类型或用户名和密码(基本身份验证)。
(可选)添加注释。
单击 “下一步” 。
在 Authentication 页上,输入SQL Server实例的以下连接属性。 特定于所选身份验证方法的属性前面是括号中的
Auth type。- 主机:你的 SQL Server。
- (基本身份验证)端口
- (基本身份验证)trustServerCertificate:默认为
false。 设置为true时,传输层使用 SSL 加密通道并绕过证书链来验证信任。 除非有绕过信任验证的具体需求,否则请将此设置保留为默认值。 - (基本身份验证)用户
- (基本身份验证)密码
- (OAuth)输入您在配置 SQL Server 联合身份验证的 Microsoft Entra ID时收集的连接详细信息。
单击“ 创建连接”。
(基本身份验证)在 连接详细信息 页上,指定以下内容:
- 信任服务器证书:默认情况下会取消选中此证书。 选中后,传输层使用 SSL 加密通道,并绕过证书链来验证信任。 除非有绕过信任验证的具体需求,否则请将此设置保留为默认值。
- 应用程序意向:连接到服务器时的应用程序工作负荷类型。
单击 “下一步” 。
在 “目录基本信息 ”页上,输入外国目录的名称。 外部目录镜像外部数据系统中的数据库,以便可以使用 Azure Databricks 和 Unity 目录查询和管理对该数据库中数据的访问。
单击“创建目录”。
在 “访问 ”页上,选择用户可以在其中访问所创建的目录的工作区。 您可以选择所有工作区均具有访问权限,或单击分配到工作区,选择工作区,然后单击分配。
更改能够管理对目录中所有对象的访问的 所有者 。 开始在文本框中键入主体,然后单击返回的结果中的主体。
授予对目录的“特权”。 单击“授权”:
指定将有权访问目录中对象的 主体 。 开始在文本框中键入主体,然后单击返回的结果中的主体。
选择“特权预设”以对每个主体授权。 默认情况下,向所有帐户用户授予
BROWSE。- 从下拉菜单中选择 “数据读取者 ”,以授予
read对目录中对象的权限。 - 从下拉菜单中选择 “数据编辑器”,以向
read和modify授予目录中对象的权限。 - 手动选择要授予的权限。
- 从下拉菜单中选择 “数据读取者 ”,以授予
单击授权。
单击 “下一步” 。
在“元数据”页上,指定标记键值对。 有关详细信息,请参阅 将标记应用于 Unity 目录安全对象。
(可选)添加注释。
单击“ 保存”。
注意
(OAuth)Microsoft Entra ID OAuth 端点必须可从 Azure Databricks 控制平面的 IP 地址进行访问。 请参阅 Azure Databricks 区域。
SQL
在笔记本或 Databricks SQL 查询编辑器中运行以下命令。
CREATE CONNECTION <connection-name> TYPE sqlserver
OPTIONS (
host '<hostname>',
port '<port>',
user '<user>',
password '<password>'
);
建议对凭据等敏感值使用 Azure Databricks secrets 而不是纯文本字符串。 例如:
CREATE CONNECTION <connection-name> TYPE sqlserver
OPTIONS (
host '<hostname>',
port '<port>',
user secret ('<secret-scope>','<secret-key-user>'),
password secret ('<secret-scope>','<secret-key-password>')
)
有关设置机密的详细信息,请参阅机密管理。
创建外部目录
注意
如果使用 UI 创建与数据源的连接,则包含外部目录创建,你可以跳过此步骤。
外部目录镜像外部数据系统中的数据库,以便可以使用 Azure Databricks 和 Unity 目录查询和管理对该数据库中数据的访问。 若要创建外部目录,请使用与已定义的数据源的连接。
若要创建外部目录,可以在Azure Databricks笔记本或 SQL 查询编辑器中使用目录资源管理器或 CREATE FOREIGN CATALOG SQL 命令。 你还可以使用 Databricks REST API 或 Databricks CLI 来创建目录。 请参阅 POST /api/2.1/unity-catalog/catalogs 和 Unity Catalog 命令。
必要的权限:CREATE CATALOG 对元数据存储拥有权限,并且拥有连接的所有权或对连接具有 CREATE FOREIGN CATALOG 权限。
目录浏览器
在Azure Databricks工作区中,单击
Catalog打开目录资源管理器。
在“目录”窗格顶部,单击
“添加”图标,然后从菜单中选择“添加目录”。也可在“快速访问”页中单击“目录”按钮,然后单击“创建目录”按钮。
按照创建目录中的说明创建外部目录。
SQL
在笔记本或 SQL 查询编辑器中运行以下 SQL 命令。 括号中的项是可选的。 替换占位符的值
-
<catalog-name>:Azure Databricks中目录的名称。 -
<connection-name>:指定数据源、路径和访问凭据的连接对象。 -
<database-name>:要作为Azure Databricks中的目录镜像的数据库的名称。
CREATE FOREIGN CATALOG [IF NOT EXISTS] <catalog-name> USING CONNECTION <connection-name>
OPTIONS (database '<database-name>');
支持的下推
下表列出了SQL Server支持的下推操作以及每个操作所需的计算。
| 下推 | 支持的计算 |
|---|---|
| 日期、时间和时间戳函数 (部分,仅筛选表达式) |
|
| 筛选器 |
|
| 限制 |
|
| 数学函数 (部分,仅筛选表达式) |
|
| 其他功能 (如 Alias、Cast、SortOrder;部分筛选器表达式) |
|
| 预测结果 |
|
| 字符串函数 (部分,仅筛选表达式) |
|
| 聚合 |
|
| 算数运算符 (如 +、-、*、%、/;如果禁用 ANSI,则不支持) |
|
| 布尔运算符 (例如 =、、<=<、>、><=>) |
|
| 其他运算符(如 ^、|、~) |
|
| 排序,与限制一起使用时 |
|
| 联接 |
|
| Windows函数 |
|
数据类型映射
从 SQL Server 读取到 Spark 时,数据类型将映射如下:
| SQL Server类型 | Spark 类型 |
|---|---|
| bigint(无符号)、decimal、money、numeric、smallmoney | 十进制类型 |
| smallint、tinyint | ShortType |
| 整数 (int) | 整数类型 |
| bigint(如果有符号) | LongType |
| 真实 | 浮点类型 |
| float | DoubleType |
| char、nchar、uniqueidentifier | 字符类型 (CharType) |
| nvarchar、varchar | VarcharType字符类型 |
| text、xml | 字符串类型 |
| binary、geography、geometry、image、timestamp、udt、varbinary | 二进制类型 |
| 比特 | BooleanType |
| 日期 | 日期类型 |
| datetime(日期时间)、datetime(日期时间)、smalldatetime(小日期时间)、time(时间) | TimestampType/TimestampNTZType |
*从 SQL Server 读取时,如果 datetimes(默认值),SQL Server TimestampType 将映射到 Spark preferTimestampNTZ = false。 如果datetimes,SQL Server TimestampNTZType将映射到 preferTimestampNTZ = true。