Azure Databricks提供了多个选项,用于查询和访问外部数据库和目录中的数据,而无需迁移数据。 根据访问模式、治理要求、写入需求和计算首选项选择方法。
选择方法
下表比较了查询联邦和目录联邦,以帮助你选择合适的方法。
| Description | 查询执行 | 写作支持 | 治理 | 最适用于 | |
|---|---|---|---|---|---|
| 查询联合 | 使用 JDBC 针对外部关系数据库运行联合查询,并通过外部目录自动执行查询下推和 Unity 目录治理。 | 使用 JDBC 向下推送到外部数据库。 查询在Azure Databricks和远程计算上运行。 | 不支持(只读)。 | 具有表级访问控制的 Unity 目录外部目录。 | 即席报表、BI 以及对运营数据库的概念验证访问。 |
| 目录联合 | 连接外部目录平台(例如 Hive 元存储、AWS Glue 或 Snowflake),以便可以直接在对象存储中查询其数据。 | 仅可在 Azure Databricks 计算资源上直接针对对象存储运行。 比查询联合更具成本效益和性能优化。 | 不支持(只读)。 | 具有表级访问控制的 Unity 目录外部目录。 | 以增量方式迁移到 Unity 目录,或者使用外部目录中的数据维护长期混合模型。 |
湖仓联合体
Lakehouse Federation 是Azure Databricks查询联合平台。 它通过 Unity Catalog 外部目录集为外部数据提供受治理的只读访问,并支持自动查询下推以及表级细粒度访问控制。
Lakehouse 联邦有两种类型:查询联邦和目录联邦。
查询联合与目录联合的比较
下表描述了查询联合身份验证和目录联合身份验证之间的主要差异。
| 查询路径 | 用例 | 步骤概述 | |
|---|---|---|---|
| 查询联合 | Unity 目录查询使用 JDBC 向下推送到外部数据库。 该查询既可在 Azure Databricks 中运行,也可使用远程计算资源运行。 |
当源同时支持 Lakehouse Federation 和 Lakeflow Connect 时,如果优先考虑在较大数据量下的性能和更低的延迟,Azure Databricks 建议使用 Lakeflow Connect。 |
|
| 目录联合 | Unity Catalog 查询直接访问对象存储中的外部表。 目录联合可用于支持直接访问其目录和存储服务的平台。 查询仅在Azure Databricks计算上运行,这意味着目录联合比查询联合更具成本效益和性能优化。 |
|
|
支持的数据源
使用查询联合连接到以下源:
使用目录融合连接以下数据源:
Spark 数据源
通过 Spark 数据源 API,可以直接从Azure Databricks读取和写入外部数据库。 当 Lakehouse 联邦不支持您的数据源、您需要写入权限,或者您需要对查询执行和并行化进行更多控制时,请使用它。
Databricks Runtime 包括适用于常见数据库的捆绑连接器,例如 PostgreSQL、SQL Server、MySQL、Snowflake 和 Redshift。 对于任何兼容 JDBC 的数据库,您都可以使用 JDBC Unity Catalog 连接来接入您自己的驱动程序,并集中管理凭据。 还可以在专用群集上安装第三方连接器,或使用 PySpark DataSource API 在 Python中生成完全自定义的连接器。
有关设置说明和完整详细信息,请参阅 Spark 数据源。