Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Wichtig
Diese Funktion befindet sich in der Public Preview für Databricks Runtime 13.3 LTS und höher.
Mithilfe der Archivierungsunterstützung in Azure Databricks können Sie cloudbasierte Lebenszyklusrichtlinien für cloudbasierten Speicher mit Delta-Tabellen verwenden. Das Aktivieren der Archivierungsunterstützung für eine Delta Lake-Tabelle weist Azure Databricks effektiv an, Dateien zu ignorieren, die älter als der angegebene Zeitraum in der Tabelle sind.
Anforderungen
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 entweder:
- 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.
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. Siehe Ändern der Lebenszyklusverwaltung-Übergangsregel.
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.
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 überprüfen Sie nur auf Dateien, die die Lifecycle-Richtlinie nicht erreicht haben. |
Frühzeitige Ausfälle 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 der angegebenen LIMIT zu entsprechen. Informationen finden Sie unter Einschränkungen.
Aktivieren der Archivierungsunterstützung
Sie aktivieren die Archivierungsunterstützung für Delta-Tabellen, indem Sie das in der zugrunde liegenden Cloud-Lifecycle-Verwaltungsrichtlinie konfigurierte Archivierungsintervall manuell angeben.
ALTER TABLE <table_name> SET TBLPROPERTIES(delta.timeUntilArchived = 'X days');
Das Festlegen einer timeUntilArchived Uhrzeit weist Azure Databricks an, Dateien in Ihrer Delta Lake-Tabelle zu ignorieren, die älter als der angegebene Zeitraum sind. Diese Einstellung unterscheidet sich von den Lebenszyklusrichtlinien Ihres Cloudkontos. Änderungen an einem haben keine Auswirkungen auf die andere. Wenn Sie die Lifecycle-Richtlinie in Ihrem Cloudkonto aktualisieren, müssen Sie auch die Archivierungseinstellung in Ihrer Delta Lake-Tabelle aktualisieren. Siehe Ändern der Lebenszyklusverwaltung-Übergangsregel.
Wenn Sie diese Einstellung ohne für den Cloudobjektspeicher festgelegte Lifecycle-Richtlinien aktivieren, können Abfragen erfolgreich durchgeführt werden, und die Ergebnisse enthalten Daten aus den für die Archivierung markierten Dateien. Siehe Wie sampelt Azure Databricks wiederhergestellte Daten?
Warnung
Ihre Cloud-Lifecycle-Richtlinie darf das Delta-Transaktionsprotokoll (_delta_log/ Verzeichnis) nicht archivieren. Informationen finden Sie unter Einschränkungen.
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
Um Dateien zu identifizieren, die wiederhergestellt werden müssen, um eine bestimmte Abfrage abzuschließen, verwenden Sie SHOW ARCHIVED FILES.
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. Zu den Ergebnissen gehören Daten aus den für die Archivierung markierten Dateien.
Das Sampling gilt möglicherweise nicht für alle Abfragen, siehe Einschränkungen.
Begrenzungen
Es gelten die folgenden Einschränkungen:
- Archivierungsunterstützung gilt nur für Datendateien. Wenn Dateien im Delta-Transaktionsprotokoll (
_delta_log/Verzeichnis) in eine archivierte Speicherebene verschoben werden, kann auf die Tabelle nicht zugegriffen werden, und alle Abfragen für die Tabelle schlagen fehl. Sie müssen Ihre Cloud-Lifecycle-Richtlinie so konfigurieren, dass der_delta_log/Pfad nicht archiviert wird. Beispiele für S3-Lifecycle-Konfigurationen. - 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 COLUMNnicht für eine Tabelle mit archivierten Dateien verwenden. -
REORG TABLE APPLY PURGEversucht sein Bestes, funktioniert aber nur beim Löschen von Vektordateien und referenzierten Datendateien, die nicht archiviert sind.PURGEkann 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.
-
LIMITAbfragen für Tabellen mit aktivierter Archivierungsunterstützung lösen kein Sampling für wiederhergestellte Daten aus. Wenn die Daten einer Tabelle wiederhergestellt werden, werden die meisten Abfragen beim Abfragen wiederhergestellter Daten erfolgreich ausgeführt, aber eineLIMITAbfrage gibt einenDELTA_ARCHIVED_FILES_IN_LIMITFehler zurück. Siehe Wie Azure Databricks Daten nach einer Wiederherstellung abtastet?
Ändern der Lebenszyklusverwaltung-Übergangsregel
Wenn Sie das Zeitintervall für die Übergangsregel für die Verwaltung des Cloudlebenszyklus ändern, müssen Sie die Eigenschaft delta.timeUntilArchived in dasselbe Intervall 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:
- Alle Datensätze, die zwischen 60 und 90 Tage alt sind, werden archiviert, wenn sich die Richtlinie ändert.
- 30 Tage lang werden keine neuen Dateien archiviert (die ältesten nicht archivierten Dateien sind 60 Tage alt, wenn die Richtlinie erweitert wird).
- Nach 30 Tagen beschreibt die Lebenszyklusrichtlinie alle archivierten Daten korrekt.
Die delta.timeUntilArchived-Einstellung verfolgt das festgelegte Zeitintervall im Vergleich zur im 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:
- Sie können die
delta.timeUntilArchived-Einstellung auf dem alten Schwellenwert belassen, bis genügend Zeit vergangen ist, um alle Dateien zu archivieren.- Anhand des obigen Beispiels wird für die ersten 30 Tage täglich die Datenmenge eines weiteren Tages von Azure Databricks als archiviert betrachtet, muss jedoch 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.timeUntilArchivednach 30 Tagen auf90 days.
- 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.timeUntilArchivedauf67 daysfestlegen, wird nach 7 Tagen das Alter aller archivierten Datendateien genau wiedergegeben. - Dieser Ansatz ist nur notwendig, wenn Sie auf alle Daten in den Hot-Tiers zugreifen müssen.
- Während die Cloudrichtlinie auf 90 Tage festgelegt ist, ändert sich das tatsächliche Alter der archivierten Daten in Echtzeit. Wenn Sie beispielsweise
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.