自动功能启用(AFE)自动将 Unity Catalog 托管表升级为使用普遍可用的推荐功能,而无需更改代码或手动 ALTER TABLE 语句。 AFE 还会在启用新功能之前验证客户端是否兼容。
AFE 具有以下优势:
- 减少验证工作区中每个表和功能组合的单个兼容性要求所需的管理工作量,尤其是在有包含数千个表的目录时。
- 自动提高托管表的最新性能和可靠性。
- 安全地实现升级。 AFE 仅在验证工作负荷兼容性后启用功能。
AFE 的工作原理
AFE 在表和架构级别监视 Unity 目录访问模式,并使用观察窗口在启用任何功能之前验证访问模式是否兼容。 公共预览版的功能的观察窗口为 50 天,GA 功能为 100 天。
AFE 使用无服务器计算来升级后台的表。
架构和表
AFE 行为取决于启用 AFE 之前是否存在架构和表。 此表具有更多详细信息:
| Schema | 表 | AFE行为 |
|---|---|---|
| 新增内容 | 新增内容 | AFE 在创建时设置架构级默认值,以便表立即继承所有受支持的功能,而无需观察期。 |
| 现存 | 新增内容 | 仅当经验证的工作负荷在观察窗口中访问架构中的所有表时,AFE 才会启用功能。 否则,如果单个未经验证的工作负荷访问架构中的任何表,AFE 不会为架构中的新表启用功能。 请参阅 已验证的工作负荷。 |
| 现存 | 现存 | 当以下所有内容都为 true 时,AFE 会打开一项功能:
|
已验证的工作负载
如果工作负载使用 Databricks 群集以至少达到该功能最低版本要求的 Databricks Runtime 版本访问数据表,则视为已验证该特定功能。
以下工作负荷被视为未经验证:
- 外部客户端和第三方服务,如 Flink 或 Presto。 请参阅 Unity 目录集成。
- Azure Databricks 提供具有直接或内核级表访问(例如 Zerobus)的服务,这些服务绕过了标准的 Databricks 运行时访问模式。 请参阅 Zerobus 引入连接器概述。
如果某个架构中的任何表在观察窗口中被 Databricks Runtime 版本低于该功能的最低要求版本或外部客户端访问,则 AFE 不会在该架构中的任何表上打开相应的功能。
支持的功能
AFE 可能会自动启用以下功能:
| 功能 | 它的作用是什么 | 最低兼容的 Databricks Runtime 版本 |
|---|---|---|
| 行跟踪 | 维护隐藏行 ID,以便使用 更改数据馈送进行增量处理。 | 14.1 |
| 列映射 | 使你无需重写数据即可重命名和删除列。 | 15.3 |
| 检查点 V2 | 使 Delta Lake 能够支持更多并发编写器,并减少大型或频繁更新的表上的写入冲突。 | 13.3 |
| 目录管理的提交 | 集中 Unity Catalog 中的提交以启用多表事务,提升外部写入的互操作能力,并在各个引擎上实施治理策略。 | 16.4 |
功能可用性可能因区域而异。
要求
- 无服务器计算必须在你的区域中可用。
- 表必须是 Delta Lake 或 Apache Iceberg 格式的 Unity 目录托管表。
观察已启用的功能
若要检查 AFE 是否在表中打开了某个功能,请在目录资源管理器的SET TBLPROPERTIES”选项卡中查找操作,或使用DESCRIBE HISTORY <table_name>。 如果 AFE 执行了该操作,则用户名字段会显示哈希值而不是用户名,例如 4d137f29-62。 请参阅 什么是目录资源管理器? 和 “查看表历史记录”。
在 AFE 在新架构中启用表的功能后,在目录资源管理器的 “属性 ”选项卡中查看架构默认值。 例如,启用了行跟踪的架构显示一个属性,例如 catalog.schema.enableRowTracking: "true"。 现有架构没有 AFE 可观测性属性。
管理 AFE 推荐功能
管理员可以使用各种控制来管理 AFE 行为和操作。
还原更改
在启用该功能之前,使用 RESTORE 将表的数据和元数据恢复到之前的版本。
RESTORE TABLE <table_name> TO VERSION AS OF <version>;
RESTORE TABLE <table_name> TO TIMESTAMP AS OF <timestamp>;
有关表历史记录和还原的详细信息,请参阅 将表还原到早期状态 。
关闭表的功能
若要关闭单个表上的功能,请执行以下操作:
ALTER TABLE <table_name> DROP FEATURE <feature_name>
手动关闭某个功能后,AFE 不会再次打开该功能。
局限性
- Delta Lake Sharing 共享的表(Databricks-to-Open 和 Databricks-to-Databricks)均从 AFE 中排除。 请参阅什么是 Delta Sharing?。
- AFE 没有批量回滚机制来禁用跨帐户中所有表的功能特性。 请参阅 管理 AFE 建议的功能。
- 不支持具体化视图和流式处理表。
- AFE 不会跟踪那些绕过 Unity Catalog 并直接通过文件路径访问表的工作负荷。 如果工作负荷使用基于路径的访问,请联系帐户团队讨论兼容性。
- 外部表通常通过文件路径访问,绕过 Unity Catalog,并且来自外部客户端的工作负载未经验证。 Unity 目录无法可靠地跟踪这些访问模式,因此外部表将从 AFE 中排除。 请参阅处理外部表。