使用外部系统来访问 Databricks 数据

本文概述了使 Azure Databricks 可供其他系统管理和治理的数据的功能和建议。

这些模式侧重于组织需要将受信任的工具或系统集成到 Azure Databricks 数据的应用场景。 如果你正在寻找有关在组织外部共享数据的指导,请参阅与其他组织中的用户安全地共享数据和 AI 资产

Azure Databricks 支持哪些外部访问?

Azure Databricks 建议使用 Unity Catalog 来管理所有数据资产。

下表概述了 Unity Catalog 对象的支持格式和访问模式。

Unity Catalog 对象 支持的格式 访问模式
托管表 Delta Lake、Iceberg 凭证销售、Iceberg REST 目录、Delta Sharing
外部表 Delta Lake 凭证售卖、Iceberg REST 目录、Delta Sharing、云 URI
外部表 CSV、JSON、Avro、Parquet、ORC、text 云 URI
外部卷 所有数据类型 云 URI

备注

Iceberg 支持描述了 Azure Databricks 使用 Delta Lake 编写的表,但启用了 Iceberg 读取 (UniForm)。

有关这些 Unity Catalog 对象的更多详细信息,请参阅以下内容:

Unity Catalog 凭证售卖

Unity Catalog 凭证售卖允许用户配置外部客户端,以继承对 Azure Databricks 管理的数据的特权。 请参阅用于外部系统访问的 Unity Catalog 凭证售卖

使用 Iceberg 客户端读取表

Azure Databricks 为 Iceberg 客户端提供已注册到 Unity Catalog 的表的只读支持。 支持的客户端包括 Apache Spark、Apache Flink、Trino 和 Snowflake。 请参阅从 Iceberg 客户端读取 Databricks 表

跨域共享只读表

可以使用 Delta Sharing 跨域和支持的系统授予对托管表或外部 Delta 表的只读访问权限。 支持 Delta Sharing 表零复制读取的软件系统包括 SAP、Amperity 和 Oracle。 请参阅与其他组织中的用户安全地共享数据和 AI 资产

读取和写入外部 Delta 表

可以使用云对象存储 URI 和凭证,从外部 Delta Lake 读取器和编写器客户端访问 Delta Lake 支持的 Unity Catalog 外部表。

Unity Catalog 不管理从外部系统直接针对云对象存储执行的读写操作,因此必须在云帐户中配置其他策略和凭据,以确保在 Azure Databricks 外部遵守数据治理策略。

备注

Azure Databricks 文档根据 Databricks Runtime 版本和平台功能,列出了限制和兼容性注意事项。 你必须确认客户端支持的读取器和编写器协议和表功能。 请参阅 delta.io

使用外部表来访问非 Delta Lake 表格数据

Unity Catalog 外部表支持 Delta Lake 之外的许多数据格式,包括 Parquet、ORC、JSON 和 CSV。 外部表将所有数据文件存储在云对象存储位置的目录中,该位置由创建表时提供的云 URI 指定。 其他系统直接从云对象存储访问这些文件。

Unity Catalog 不管理从外部系统直接针对云对象存储执行的读写操作,因此必须在云帐户中配置其他策略和凭据,以确保在 Azure Databricks 外部遵守数据治理策略。

从多个系统读取和写入外部表会导致一致性问题和数据损坏,因为除 Delta Lake 以外的格式不提供事务保证。

Unity Catalog 可能无法识别由 Delta Lake 以外的格式支持的外部表写入的新分区。 Databricks 建议定期运行 MSCK REPAIR TABLE table_name,以确保 Unity Catalog 已注册由外部系统写入的所有数据文件。

使用外部卷来访问非表格数据

Databricks 建议使用外部卷来存储除 Azure Databricks 以外的外部系统读取或写入的非表格数据文件。 请参阅什么是 Unity Catalog 卷?

Unity Catalog 不管理从外部系统直接针对云对象存储执行的读写操作,因此必须在云帐户中配置其他策略和凭据,以确保在 Azure Databricks 外部遵守数据治理策略。

卷提供 API、SDK 和其他工具,用于从卷中获取文件及将文件放入卷中。 请参阅管理卷中的文件

备注

Delta Sharing 允许将卷共享到其他 Azure Databricks 帐户,但不与外部系统集成。