使用切碎优化 VARIANT 数据的性能

重要

此功能在 Beta 版中。

本页介绍如何使用切碎来优化列中具有半结构化数据的表的 VARIANT 查询性能。

请参阅 VARIANTDelta Lake 中的类型、Variant 支持查询变体数据

什么是粉碎?

拆分通过将常见字段存储为 Parquet 文件中的单独列来提高数据的查询性能 VARIANT 。 此过程减少了读取字段所需的 I/O,并使用列式格式(而不是二进制 blob)改进压缩。

要求

读取和写入碎纸 VARIANT 表需要 Databricks Runtime 17.2 或更高版本。

启用粉碎

通过预览门户为整个工作区启用粉碎。 无需更改代码即可读取或写入 VARIANT 带有切碎的数据。

为工作区启用该功能后,会自动为以下方案启用切碎:

  • CREATE TABLE 包含一个或多个 VARIANT 列。
  • CREATE AND REPLACE TABLE 包含一个或多个 VARIANT 列。
  • ALTER TABLE 添加一个或多个 VARIANT 列时。

选择退出对特定表的未来写入进行切碎

如果为工作区启用切碎 Beta,但想要排除特定表,请设置 enableVariantShredding 表属性:

ALTER TABLE my_table SET TBLPROPERTIES ('delta.enableVariantShredding' = 'false');

删除现有表上的切碎

若要删除现有表上的切碎,请使用命令删除该功能 ALTER TABLE 。 此作还会将已碎碎 VARIANT 的数据重写为非精 VARIANT 明的格式,并将 enableVariantShredding 表属性设置为 false。

ALTER TABLE my_table DROP FEATURE "variantShredding-preview";

局限性

  • 粉碎数据会导致写入产生一些开销。
  • 启用切碎不会自动转换表中的现有 VARIANT 数据。 它仅适用于启用该功能后写入的数据。 若要重写现有 VARIANT 数据,请使用 REORG TABLE my_table APPLY (SHRED VARIANT)
  • 粉碎适用于结构中的顶级 VARIANT 列或 VARIANT 字段,不包括 VARIANT 存储在数组或映射中的数据。