Was ist Predictive I/O?

Predictive I/O ist eine Sammlung von Azure Databricks-Optimierungen, die das Lesen und Aktualisieren von Daten beschleunigen:

  • Beschleunigte Lesevorgänge beschleunigen selektive Abfragen, die sonst deutlich mehr Daten scannen würden, als sie zurückliefern.
  • Accelerated updates reduzieren die Daten, die neu geschrieben werden, wenn ein Update, Löschen oder Merge nur wenige Zeilen in einer Datei ändert.

Predictive I/O ist exklusiv für die Photon-Engine in Azure Databricks. Siehe Was ist Photon?.

Wenn prädiktive I/O angewendet wird

Predictive I/O läuft automatisch. Man schaltet es nicht für einzelne Abfragen ein. So profitieren Sie:

Predictive I/O ersetzt ebenfalls die Bloom-Filterindizes. Siehe Bloom-Filterindizes (veraltet).

Predictive I/O verwenden, um Lesevorgänge zu beschleunigen

Predictive I/O-Vorgänge werden verwendet, um die Leistung der Datenüberprüfung und -filterung für alle Vorgänge für unterstützte Computetypen zu steigern.

Wichtig

Prädiktive E/A-Lesevorgänge werden von den serverlosen und Pro-Typen von SQL-Warehouses sowie von Photon-beschleunigten Clustern unterstützt, die Databricks Runtime 11.3 LTS und höher ausführen.

Prädiktive I/O verbessert die Scan-Leistung durch den Einsatz von Deep-Learning-Techniken, um:

  • Bestimmen Sie das effizienteste Zugriffsmuster, um die Daten zu lesen, und scannen Sie nur die tatsächlich benötigten Daten.
  • Aufheben der Decodierung von Spalten und Zeilen, die zum Generieren von Abfrageergebnissen nicht erforderlich sind.
  • Berechnen der Wahrscheinlichkeiten von Suchkriterien in selektiven Abfragen, die einer Zeile entsprechen. Während Abfragen laufen, nutzt Predictive I/O diese Wahrscheinlichkeiten, um vorherzusagen, wo sich die nächste passende Zeile befindet, und liest nur diese Daten aus dem Cloud-Speicher.

Verwenden von Predictive I/O zum Beschleunigen von Updatevorgängen

Predictive I/O für Updates wird automatisch für alle Tabellen verwendet, die auf diesen photonenfähigen Rechenarten Löschvektoren aktiviert haben:

  • Serverlose SQL-Warehouses
  • Pro SQL-Warehouses
  • Cluster mit Databricks Runtime 14.0 und höher

Hinweis

Zwar wird prädiktives E/A für Updates in Databricks Runtime 12.2 LTS und höher unterstützt, Databricks empfiehlt jedoch die Verwendung von Databricks Runtime 14.0 und höher, um eine optimale Leistung zu gewährleisten.

Siehe Löschungsvektoren in Databricks.

Wichtig

Eine Workspace-Admin-Einstellung steuert, ob Löschvektoren für neue Delta-Lake-Tabellen automatisch aktiviert werden. Weitere Informationen finden Sie unter Automatische Aktivierung von Löschvektoren.

Sie aktivieren die Unterstützung für Löschvektoren für eine Delta Lake-Tabelle, indem Sie eine Delta Lake-Tabelleneigenschaft festlegen. Du aktivierst Löschvektoren während der Tabellenerstellung oder änderst eine bestehende Tabelle, zum Beispiel:

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

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

Warnung

Wenn Sie Löschvektoren aktivieren, wird die Tabellenprotokollversion aktualisiert. Nach dem Upgrade ist die Tabelle für Delta-Lake-Clients, die keine Löschvektoren unterstützen, nicht lesbar. Siehe Delta Lake Featurekompatibilität und Protokolle.

Eine Liste der Clients, die Löschvektoren unterstützen, finden Sie unter Clientkompatibilität.

In Databricks Runtime 14.1 und höher können Sie das Tabellenfeature für Löschvektoren ablegen, um die Kompatibilität mit anderen Delta-Clients zu ermöglichen. Weitere Informationen finden Sie unter Löschen eines Delta Lake-Tabellenfeatures und Herabstufen des Tabellenprotokolls.

Predictive I/O nutzt Löschvektoren, um Aktualisierungen zu beschleunigen, indem die Häufigkeit vollständiger Dateiumschreibungen während der Datenänderung in Delta-Lake-Tabellen reduziert wird. Predictive I/O optimiert DELETE-, MERGE- und UPDATE-Vorgänge.

Anstatt alle Datensätze in einer Datendatei neu zu schreiben, wenn ein Datensatz aktualisiert oder gelöscht wird, verwendet Predictive I/O Löschvektoren, um anzugeben, dass Datensätze aus den Zieldatendateien entfernt wurden. Zusätzliche Datendateien werden verwendet, um Updates anzugeben.

Nachfolgende Lesevorgänge in der Tabelle lösen den aktuellen Tabellenstatus auf, indem die notierten Änderungen auf die neueste Tabellenversion angewendet werden.

Wichtig

Prädiktive I/O-Aktualisierungen unterliegen denselben Einschränkungen wie Löschvektoren. In Databricks Runtime 12.2 LTS und höher gelten folgende Einschränkungen:

  • OpenSharing wird für Tabellen mit aktivierten Löschvektoren nicht unterstützt.
  • Sie können keine Manifestdatei für eine Tabelle mit vorhandenen Löschvektoren generieren. Führen Sie REORG TABLE ... APPLY (PURGE) aus und stellen Sie sicher, dass keine gleichzeitigen Schreibvorgänge ausgeführt werden, um ein Manifest zu generieren.
  • Sie können keine inkrementellen Manifestdateien für eine Tabelle mit aktivierten Löschvektoren erstellen.