连接到外部数据库和目录

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。
  • 使用访问凭据和 JDBC URL 在 Unity 目录中创建连接。
  • 使用连接创建外部目录。
  • 向外部目录中的表的用户授予权限。
  • 运行查询。 这些内容将向下推送到外部数据库。
目录联合 Unity Catalog 查询直接访问对象存储中的外部表。 目录联合可用于支持直接访问其目录和存储服务的平台。 查询仅在Azure Databricks计算上运行,这意味着目录联合比查询联合更具成本效益和性能优化。
  • 正在迁移到 Unity 目录,但需要逐步从外部目录分阶段引入管理的数据。
  • 你需要一个长期混合模型,其中某些数据保留在外部目录中,某些数据由 Unity 目录管理。
  • 在 Unity 目录中创建用于访问外部目录的连接。
  • 为表路径创建存储凭据和外部位置。
  • 使用连接和外部存储位置创建一个外部目录。
  • 向外部目录中的表的用户授予权限。
  • 运行查询。 这些操作直接在对象存储上运行。

支持的数据源

使用查询联合连接到以下源:

使用目录融合连接以下数据源:

Spark 数据源

通过 Spark 数据源 API,可以直接从Azure Databricks读取和写入外部数据库。 当 Lakehouse 联邦不支持您的数据源、您需要写入权限,或者您需要对查询执行和并行化进行更多控制时,请使用它。

Databricks Runtime 包括适用于常见数据库的捆绑连接器,例如 PostgreSQL、SQL Server、MySQL、Snowflake 和 Redshift。 对于任何兼容 JDBC 的数据库,您都可以使用 JDBC Unity Catalog 连接来接入您自己的驱动程序,并集中管理凭据。 还可以在专用群集上安装第三方连接器,或使用 PySpark DataSource API 在 Python中生成完全自定义的连接器。

有关设置说明和完整详细信息,请参阅 Spark 数据源

其他资源