Teilen über


Archivierungsunterstützung in Azure Databricks

Wichtig

Diese Funktion befindet sich in der Public Preview für Databricks Runtime 13.3 LTS und höher.

Die Archivierungsunterstützung in Azure Databricks führt eine Sammlung von Funktionen ein, mit denen Sie cloudbasierte Lebenszyklusrichtlinien für Cloudobjektspeicher mit Delta-Tabellen verwenden können.

Wichtig

Azure Databricks verfügt nur über Archivierungsunterstützung für Azure Archive. Siehe Azure-Dokumentation zur Kostenoptimierung mit der Lebenszyklusverwaltung.

Warum sollten Sie die Archivierungsunterstützung aktivieren?

Die Archivierungsunterstützung erlaubt nur Abfragen, die korrekt beantwortet werden können, ohne archivierte Dateien zu berühren. Zu diesen Abfragen gehören die Folgenden:

  • Fragen nur Metadaten ab.
  • Haben Filter, für die keine archivierten Dateien gescannt werden müssen.

Alle Abfragen, die Daten in archivierten Dateien benötigen, schlagen fehl.

Wichtig

Azure Databricks liefert keine Ergebnisse für Abfragen, die archivierte Dateien benötigen, um das richtige Ergebnis zu liefern.

Ohne die Archivierungsunterstützung könnten Vorgänge für Delta-Tabellen fehlschlagen, da Datendateien oder Transaktionsprotokolldateien zu archivierten Speicherorten verschoben wurden und nicht verfügbar sind, wenn sie abgefragt werden. Die Archivierungsunterstützung führt Optimierungen ein, um die Abfrage von archivierten Daten nach Möglichkeit zu vermeiden. Außerdem wird eine neue Syntax hinzugefügt, um Dateien zu identifizieren, die aus dem Archivierungsspeicher wiederhergestellt werden müssen, um Abfragen abzuschließen.

Durch die Aktivierung der Archivierungsunterstützung für eine Tabelle in Azure Databricks werden keine Lebenszyklusrichtlinien erstellt oder geändert, die für Ihren Cloud-Objektspeicher definiert wurden. Um die gewünschten Ergebnisse zu erzielen, sollten Ihre Cloudlebenszyklusrichtlinie und die delta.timeUntilArchived-Einstellung übereinstimmen.

Abfragen, die für archivierte Daten optimiert wurden

Die Archivierungsunterstützung in Azure Databricks optimiert die folgenden Abfragen für Delta-Tabellen:

Abfrage Neues Verhalten
SELECT * FROM <table_name> LIMIT <limit> [WHERE <partition_predicate>] Ignorieren Sie archivierte Dateien automatisch, und geben Ergebnisse aus Daten in einer nicht archivierten Speicherebene zurück.
Delta Lake-Wartungsbefehle: OPTIMIZE, ZORDER, ANALYZE, PURGE Automatisches Ignorieren von archivierten Dateien und Ausführen der Wartung auf dem Rest der Tabelle.
DDL- und DML-Anweisungen, die Daten überschreiben oder Daten löschen, einschließlich der folgenden: REPLACE TABLE, INSERT OVERWRITE, TRUNCATE TABLE, DROP TABLE Markieren Sie Transaktionsprotokolleinträge für archivierte Zieldatendateien als gelöscht.
FSCK REPAIR TABLE Ignorieren Sie archivierte Dateien, und suchen Sie nur nach Dateien, welche die Lebenszyklusrichtlinie nicht erfüllt haben.

Informationen finden Sie unter Einschränkungen.

Frühzeitiger Fehle und Fehlermeldungen

Bei Abfragen, die archivierte Dateien überprüfen müssen, um richtige Ergebnisse zu generieren, stellt die Konfiguration der Archivierungsunterstützung für Delta Lake Folgendes sicher:

  • Abfragen schlagen frühzeitig fehl, wenn sie versuchen, auf archivierte Dateien zuzugreifen, wodurch weniger Computeressourcen verschwendet werden und es Benutzern ermöglicht wird, Abfragen schnell anzupassen und erneut auszuführen.
  • Fehlermeldungen informieren Benutzer darüber, dass bei einer Abfrage ein Fehler aufgetreten ist, weil die Abfrage versucht hat, auf archivierte Dateien zuzugreifen.

Benutzer können einen Bericht über Dateien generieren, die mithilfe der SHOW ARCHIVED FILES-Syntax wiederhergestellt werden müssen. Siehe Anzeigen archivierter Dateien.

Wichtig

Wenn sie den Fehler Not enough files to satisfy LIMIT erhalten, dann verfügt Ihre Tabelle nicht über genügend Datenzeilen in nicht archivierten Dateien, um die Anzahl der durch LIMIT angegebenen Datensätze zu erfüllen. Senken Sie die LIMIT-Klausel, um genügend nicht archivierte Zeilen zu finden, um die angegebene LIMIT zu erfüllen.

Aktivieren der Archivierungsunterstützung

Sie aktivieren die Archivierungsunterstützung in Azure Databricks für Delta-Tabellen, indem Sie wie in der folgenden Beispielsyntax das in der zugrunde liegenden Cloud-Lebenszyklusverwaltungsrichtlinie konfigurierte Archivierungsintervall manuell angeben:

ALTER TABLE <table_name> SET TBLPROPERTIES(delta.timeUntilArchived = 'X days');

Die Aktivierung der Archivierungsunterstützung weist Azure Databricks effektiv an, Dateien zu ignorieren, die älter als der angegebene Zeitraum sind. Wenn Sie diese Einstellung aktivieren, ohne Lebenszyklusrichtlinien für Ihren Cloudobjektspeicher festgelegt zu haben, ignoriert Azure Databricks weiterhin Dateien basierend auf diesem festgelegten Schwellenwert, aber es werden keine Daten archiviert.

Delta Lake interagiert nicht direkt mit den Lebenszyklusverwaltungsrichtlinien, die in Ihrem Cloudkonto konfiguriert sind. Wenn Sie die Richtlinie in Ihrem Cloudkonto aktualisieren, müssen Sie die Richtlinie für Ihre Delta-Tabelle aktualisieren. Siehe Ändern der Lebenszyklusverwaltung-Übergangsregel.

Wichtig

Die Archivierungsunterstützung basiert vollständig auf kompatiblen Azure Databricks-Computeumgebungen und funktioniert nur für Delta-Tabellen. Das Konfigurieren der Archivierungsunterstützung ändert nicht das Verhalten, die Kompatibilität oder die Unterstützung in OSS Delta Lake-Clients oder Databricks Runtime 12.2 LTS und höher.

Anzeigen archivierter Dateien

Verwenden Sie SHOW ARCHIVED FILES zum Identifizieren von Dateien, die wiederhergestellt werden müssen, um eine bestimmte Abfrage abzuschließen, wie im folgenden Beispiel dargestellt:

SHOW ARCHIVED FILES FOR table_name [ WHERE predicate ];

Dieser Vorgang gibt URIs für archivierte Dateien als Spark DataFrame zurück. Stellen Sie die erforderlichen archivierten Dateien gemäß dokumentierten Anweisungen ihres Objektspeicheranbieters wieder her. Informationen dazu, wie Azure Databricks auf wiederhergestellte Daten überprüft, finden Sie unter Wie sucht Azure Databricks nach wiederhergestellten Daten?.

Hinweis

Während dieses Vorgangs hat Delta Lake nur Zugriff auf die im Transaktionsprotokoll enthaltenen Datenstatistiken. Standardmäßig sind dies die folgenden Statistiken, die für die ersten 32 Spalten in der Tabelle gesammelt werden:

  • Minimalwerte
  • Maximalwerte
  • NULL-Zählungen
  • Gesamtanzahl von Datensätzen

Die zurückgegebenen Dateien enthalten alle archivierten Dateien, die gelesen werden müssen, um zu bestimmen, ob Datensätze, die ein Prädikat erfüllen, in der Datei vorhanden sind. Databricks empfiehlt, Prädikate bereitzustellen, die Felder enthalten, auf denen Daten partitioniert, z-sortiert oder gruppiert werden, um die Anzahl der Dateien zu reduzieren, die wiederhergestellt werden müssen.

Aktualisieren oder Löschen archivierter Daten

Der Vorgang schlägt fehl, wenn Sie einen MERGE-, UPDATE- oder DELETE-Vorgang ausführen, der sich auf Daten in archivierten Dateien auswirkt. Sie müssen die Daten auf einer Speicherebene wiederherstellen, die ein schnelles Abrufen unterstützt, um diese Vorgänge durchzuführen. Verwenden Sie SHOW ARCHIVED FILES, um die Dateien zu bestimmen, die Sie wiederherstellen müssen.

Wie sucht Azure Databricks nach wiederhergestellten Daten?

Wenn Azure Databricks einen Scan über eine Tabelle mit aktivierter Archivierungsunterstützung vorbereitet, werden Dateien gesucht, die älter als der von der Abfrage benötigte angegebene Aufbewahrungszeitraum sind, um festzustellen, ob Dateien wiederhergestellt wurden.

Wenn die Ergebnisse darauf hinweisen, dass die gefundenen und als archiviert angenommenen Dateien wiederhergestellt wurden, geht Azure Databricks davon aus, dass alle Dateien für die Abfrage wiederhergestellt wurden, und die Abfrage wird fortgeführt.

Begrenzungen

Es gelten die folgenden Einschränkungen:

  • Es gibt keine Unterstützung für Lebenszyklusverwaltungsrichtlinien, die nicht auf der Erstellungszeit von Dateien basieren. Dies umfasst zeitbasierte und tagbasierte Zugriffsrichtlinien.
  • Sie können DROP COLUMN nicht für eine Tabelle mit archivierten Dateien verwenden.
  • REORG TABLE APPLY PURGE versucht sein Bestes, funktioniert aber nur beim Löschen von Vektordateien und referenzierten Datendateien, die nicht archiviert sind. PURGE kann archivierte Löschvektordateien nicht löschen.
  • Das Verlängern der Übergangsregel für die Lebenszyklusverwaltung führt zu unerwartetem Verhalten. Siehe Verlängern der Lebenszyklusverwaltung-Übergangsregel.

Ändern der Lebenszyklusverwaltung-Übergangsregel

Wenn Sie das Zeitintervall für die Übergangsregel für die Cloud-Lebenszyklusverwaltung ändern, müssen Sie die delta.timeUntilArchived-Eigenschaft aktualisieren.

Wenn das Zeitintervall vor der Archivierung verkürzt wird (weniger Zeit seit der Dateierstellung), funktioniert die Archivierungsunterstützung für die Delta-Tabelle weiterhin normal, nachdem die Tabelleneigenschaft aktualisiert wurde.

Verlängern der Lebenszyklusverwaltung-Übergangsregel

Wenn das Zeitintervall vor der Archivierung erweitert wird (um mehr Zeit hinzuzufügen, bevor die Archivierung ausgelöst wird), kann das Aktualisieren der Eigenschaft delta.timeUntilArchived auf den neuen Wert zu Fehlern führen. Cloudanbieter stellen Dateien nicht automatisch aus dem archivierten Speicher wieder her, wenn Richtlinien zur Datenaufbewahrung geändert werden. Dies bedeutet, dass Dateien, die zuvor archiviert werden konnten, jetzt aber nicht mehr als archivierungsfähig gelten, weiterhin archiviert werden.

Wichtig

Um Fehler zu vermeiden, legen Sie die delta.timeUntilArchived-Eigenschaft niemals auf einen Wert fest, der größer ist als das tatsächliche Alter der zuletzt archivierten Daten.

Stellen Sie sich ein Szenario vor, in dem das Zeitintervall für die Archivierung von 60 Tagen auf 90 Tage geändert wird:

  1. Alle Datensätze, die zwischen 60 und 90 Tage alt sind, werden archiviert, wenn sich die Richtlinie ändert.
  2. 30 Tage lang werden keine neuen Dateien archiviert (die ältesten nicht archivierten Dateien sind 60 Tage alt, wenn die Richtlinie erweitert wird).
  3. Nach 30 Tagen beschreibt die Lebenszyklusrichtlinie alle archivierten Daten korrekt.

Die delta.timeUntilArchived-Einstellung verfolgt das festgelegte Zeitintervall mit der vom Delta-Transaktionsprotokoll aufgezeichneten Dateierstellungszeit nach. Es verfügt nicht über explizite Kenntnisse der zugrunde liegenden Richtlinie. Während des Verzögerungszeitraums zwischen dem alten und dem neuen Archivierungsschwellenwert können Sie einen der folgenden Ansätze verwenden, um das Abfragen archivierter Dateien zu vermeiden:

  1. Sie können die delta.timeUntilArchived-Einstellung auf dem alten Schwellenwert belassen, bis genügend Zeit vergangen ist, um alle Dateien zu archivieren.
    • Gemäß dem obigen Beispiel würde in den ersten 30 Tagen jeden Tag ein weiterer Tag an Daten von Azure Databricks als archiviert betrachtet werden, muss aber noch vom Cloud-Anbieter archiviert werden. Dies führt nicht zu einem Fehler, aber es werden einige Datendateien ignoriert, die abgefragt werden könnten.
    • Aktualisieren Sie delta.timeUntilArchived nach 30 Tagen auf 90 days.
  2. Sie können die delta.timeUntilArchived-Einstellung jeden Tag aktualisieren, um das aktuelle Intervall während des Verzögerungszeitraums widerzuspiegeln.
    • Während die Cloudrichtlinie auf 90 Tage festgelegt ist, ändert sich das tatsächliche Alter der archivierten Daten in Echtzeit. Wenn Sie beispielsweise delta.timeUntilArchived auf 67 days festlegen, wird nach 7 Tagen das Alter aller archivierten Datendateien genau wiedergegeben.
    • Dieser Ansatz ist nur erforderlich, wenn Sie auf alle Daten in heißen Ebenen zugreifen müssen.

Hinweis

Das Aktualisieren des Werts für delta.timeUntilArchived ändert nicht, welche Daten archiviert werden. Es ändert nur, welche Daten von Azure Databricks so behandelt werden, als würden sie archiviert.