什么是预测性 I/O?

预测性 I/O 是 Azure Databricks 优化的集合,这些优化可提高数据交互的性能。 预测性 I/O 功能分为以下类别:

  • 加速读取缩短了扫描和读取数据所需的时间。
  • 加速更新减少了在更新、删除和合并期间需要重写的数据量。

预测性 I/O 专用于 Azure Databricks 上的 Photon 引擎。

使用预测性 I/O 加快读取速度

预测性 I/O 用于提高支持的计算类型上所有操作的数据扫描和筛选性能。

重要

专业类型的 SQL 仓库和运行 Databricks Runtime 11.3 LTS 及更高版本的 Photon 加速群集支持预测性 I/O 读取。

预测性 I/O 通过应用深度学习技术来执行以下操作,从而提高扫描性能:

  • 确定最有效的数据读取访问模式,并仅扫描实际需要的数据。
  • 消除不需要用于生成查询结果的列和行的解码。
  • 计算选择性查询中的搜索条件与某个行匹配的概率。 运行查询时,我们可以使用这些概率来预测下一个匹配行将出现在哪个位置,并仅从云存储中读取该数据。

使用预测性 I/O 加快更新速度

对于使用以下启用 Photon 的计算类型启用删除向量的所有表,会自动使用预测性 I/O 更新:

  • Pro SQL 仓库。
  • 运行 Databricks Runtime 14.0 及更高版本的群集。

注意

Databricks Runtime 12.2 LTS 及更高版本支持预测性 I/O 更新,但 Databricks 建议使用 14.0 及更高版本以获得最佳性能。

请参阅什么是删除向量?

重要

工作区管理设置控制是否为新的 Delta 表自动启用删除向量。

可以通过设置一个 Delta Lake 表属性来启用对 Delta Lake 表上向量删除的支持。 在创建或更改现有表的期间启用删除向量,如以下示例所示:

CREATE TABLE <table-name> [options] TBLPROPERTIES ('delta.enableDeletionVectors' = true);

ALTER TABLE <table-name> SET TBLPROPERTIES ('delta.enableDeletionVectors' = true);

警告

启用删除向量时,表协议版本将会升级。 升级后,不支持删除向量的 Delta Lake 客户端无法读取该表。 请参阅 Azure Databricks 如何管理 Delta Lake 功能兼容性?

有关支持删除向量的客户端的列表,请参阅与 Delta 客户端的兼容性

在 Databricks Runtime 14.1 及更高版本中,你可以将删除向量表功能删除以实现与其他 Delta 客户端的兼容性。 请参阅删除 Delta 表功能

预测性 I/O 利用删除向量通过在 Delta 表上进行数据修改时降低完整文件重写的频率来加速更新。 预测性 I/O 会优化 DELETEMERGEUPDATE 操作。

当更新或删除任何记录时,预测性 I/O 不会重写数据文件中的所有记录,而是使用删除向量来指示记录已从目标数据文件中删除。 补充数据文件用于指示更新。

对表的后续读取通过将记录的更改应用于最新的表版本来解析当前表状态。

重要

预测性 I/O 更新的所有限制与删除向量的所有限制相同。 Databricks Runtime 12.2 LTS 及更高版本中存在以下限制:

  • 启用了删除矢量的表不支持增量共享。
  • 无法为存在删除向量的表生成清单文件。 运行 REORG TABLE ... APPLY (PURGE) 并确保没有任何并发写入操作正在运行,以生成清单。
  • 无法为启用了删除向量的表以增量方式生成清单文件。