本页概述了将由 Azure Databricks 管理和治理的数据提供给外部系统的功能和建议。
这些模式侧重于组织需要将受信任的工具或系统集成到Azure Databricks数据的方案。 如果你正在寻找有关在组织外部共享数据的指南,请参阅 安全地共享数据和 AI 资产。
Azure Databricks支持哪些外部访问?
Azure Databricks建议使用 Unity 目录来管理所有数据资产。 Unity Catalog 通过 Unity REST API 集成 Delta Lake 客户端,并通过 Iceberg REST 目录 集成 Apache Iceberg 客户端。 有关受支持的集成的完整列表,请参阅 Unity 目录集成。
下表概述了 Unity Catalog 对象的支持格式和访问模式。
| Unity Catalog 对象 | 支持的格式 | 访问模式 |
|---|---|---|
| 托管表 | Delta Lake、Iceberg | Unity REST API、Iceberg REST 目录、Delta Sharing |
| 外部表 | Delta Lake | Unity REST API、Iceberg REST 目录、Delta 共享、云 URI |
| 外部表 | CSV、JSON、Avro、Parquet、ORC、text | Unity REST API、云 URI |
| 外部卷 | 所有数据类型 | 云 URI |
| 外部表* | Delta Lake、Iceberg | Unity REST API、Iceberg REST 目录(预览版)、Delta Sharing |
| 外部表* | CSV、JSON、Avro、Parquet、ORC、text | Unity REST API、云 URI |
* 我们仅支持使用 目录联合 的外部表。 为了保证来自外部引擎对外部表的全新读取,客户可以使用 Lakeflow 作业定期刷新元数据。
有关这些 Unity Catalog 对象的更多详细信息,请参阅以下内容:
Unity Catalog 凭证分发
Unity 目录凭据分发允许用户配置外部客户端,以继承由Azure Databricks管控的数据的权限。 Iceberg 和 Delta 客户端都可以支持凭据售货。 请参阅用于外部系统访问的 Unity Catalog 凭证售卖。
使用 Delta 客户端访问表
使用 Unity REST API 从支持的 Delta 客户端读取、写入和创建由 Delta Lake 支持的 Unity 目录托管表和外部表。 请参阅 Delta 客户端中的 Access Databricks 表。
重要
从 Delta 客户端创建和写入 Unity Catalog 托管表处于 Beta 测试阶段。
对于外部表,Unity 目录不控制直接从外部系统针对云对象存储执行的读取和写入,因此必须在云帐户中配置其他策略和凭据,以确保在Azure Databricks外部遵守数据管理策略。
注释
Azure Databricks文档根据 Databricks Runtime 版本和平台功能列出了限制和兼容性注意事项。 你必须确认客户端支持的读取器和编写器协议和表功能。 请参阅 delta.io。
使用 Iceberg 客户端访问表
Azure Databricks为 Iceberg 客户端提供读取、写入和创建对注册到 Unity 目录的表的支持。 支持的客户端包括 Apache Spark、Apache Flink、Trino 和 Snowflake。 请参阅来自 Apache Iceberg 客户端的 Access Azure Databricks表。
跨域共享只读表
可以使用 Delta Sharing 跨域和支持的系统授予对托管表或外部 Delta 表的只读访问权限。 支持 Delta Sharing 表零复制读取的软件系统包括 SAP、Amperity 和 Oracle。 参阅安全共享数据和 AI 资产。
注释
还可以使用 Delta Sharing 给予客户或合作伙伴只读访问权限。 Delta Sharing还支持使用Databricks 市场共享的数据。
使用外部表访问非 Delta Lake 表格数据
Unity Catalog 外部表支持 Delta Lake 之外的许多数据格式,包括 Parquet、ORC、JSON 和 CSV。 外部表将所有数据文件存储在云对象存储位置的目录中,该位置由创建表时提供的云 URI 指定。 其他系统直接从云对象存储访问这些文件。
Unity 目录不控制直接从外部系统针对云对象存储执行的读取和写入,因此必须在云帐户中配置其他策略和凭据,以确保在Azure Databricks外部遵守数据管理策略。
从多个系统读取和写入外部表会导致一致性问题和数据损坏,因为除 Delta Lake 以外的格式不提供事务保证。
Unity Catalog 可能无法识别由 Delta Lake 以外的格式支持的外部表写入的新分区。 Databricks 建议定期运行 MSCK REPAIR TABLE table_name,以确保 Unity Catalog 已注册由外部系统写入的所有数据文件。
使用外部卷访问非表格数据
Databricks 建议使用外部卷来存储由外部系统读取或写入的非结构化数据文件,除了 Azure Databricks 之外。 请参阅什么是 Unity Catalog 卷?。
Unity 目录不控制直接从外部系统针对云对象存储执行的读取和写入,因此必须在云帐户中配置其他策略和凭据,以确保在Azure Databricks外部遵守数据管理策略。
卷提供 API、SDK 和其他工具,用于从卷中获取文件及将文件放入卷中。 请参阅 在 Unity Catalog 卷中处理文件。
注释
Delta Sharing允许将数据卷共享到其他Azure Databricks帐户,但不与外部系统集成。