Verwenden Sie Variant Shredding zur Leistungsoptimierung

Variant Shredding verbessert die Abfrageleistung für VARIANT-Spalten, indem häufig vorkommende Felder als separate Spalten in den zugrunde liegenden Parquet-Dateien gespeichert werden. Durch das Aufteilen wird der zum Lesen von Feldern erforderliche Ein-/Ausgabeaufwand reduziert, und die Komprimierung wird durch die Verwendung eines spaltenorientierten Formats anstelle eines binären Blobs verbessert.

Siehe VARIANT Datentyp, Unterstützung des Variant-Typs für Apache Iceberg und Delta Lake und Variant-Daten abfragen.

Requirements

Databricks Runtime 17.3 oder höher ist erforderlich, um geschredderte VARIANT-Tabellen zu lesen und zu schreiben. Für eine optimale Abfrageleistung bei der Erfassung von Variantenstatistiken und dem Datenüberspringen empfiehlt Databricks Databricks Runtime 18.1 oder höher.

Schreddern aktivieren

Ab Databricks Runtime 17.3 ist Shredding automatisch aktiviert, wenn Sie mit VARIANT eine neue Tabelle mit einer oder mehreren CREATE TABLE Spalten erstellen.

CREATE OR REPLACE TABLE und ALTER TABLE aktivieren das Schreddern nicht automatisch. Dadurch wird verhindert, dass das Zerlegungsverhalten vorhandener Tabellen und Workloads verändert wird.

Für vorhandene Tabellen können Sie Shredding manuell aktivieren, indem Sie die Tabelleneigenschaft enableVariantShredding auf TRUE festlegen, und deaktivieren, indem Sie die Eigenschaft auf FALSE festlegen:

Delta Lake

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

Eisbergtisch

ALTER TABLE my_table SET TBLPROPERTIES ('iceberg.enableVariantShredding' = 'true');

Vergewissern Sie sich, dass das Shredding aktiviert ist, indem Sie überprüfen, ob die Tabelleneigenschaft enableVariantShredding auf true gesetzt ist.

Deaktivieren von Shredding für eine bestimmte Tabelle

Um eine bestimmte Tabelle bei zukünftigen Schreibvorgängen vom Shredding auszuschließen, legen Sie die Tabelleneigenschaft enableVariantShredding auf FALSE fest:

Delta Lake

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

Eisbergtisch

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

Entfernen von Shredding aus einer vorhandenen Tabelle

Um das Shredding bei einer bestehenden Tabelle zu entfernen, verwenden Sie den ALTER TABLE Befehl, um das Feature zu löschen. Bei diesem Vorgang werden auch zerkleinerte VARIANT Daten in das nicht zerkleinerte VARIANT Format umgeschrieben und die enableVariantShredding Tabelleneigenschaft auf "false" festgelegt.

ALTER TABLE my_table DROP FEATURE "variantShredding";

Limitations

  • Das Zerkleinern von Daten führt zu einem gewissen Aufwand bei Schreibvorgängen.
  • Das Aktivieren der Zerkleinerung konvertiert vorhandene VARIANT-Daten in einer Tabelle nicht automatisch. Sie gilt nur für Daten, die geschrieben wurden, nachdem das Feature aktiviert wurde. Verwenden Sie VARIANT zum Umschreiben vorhandener REORG TABLE my_table APPLY (SHRED VARIANT) Daten.
  • Shredding gilt für VARIANT-Spalten auf oberster Ebene oder VARIANT-Felder in Strukturen, ausgenommen VARIANT-Daten, die in Arrays oder Zuordnungen gespeichert sind.