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.
Important
Dieses Feature befindet sich in der Betaversion. Arbeitsbereichsadministratoren können den Zugriff auf dieses Feature über die Vorschauseite steuern. Siehe Manage Azure Databricks Previews.
Eine fehlerhafte Transformation, ein fehlerhafter Batch von Quelldatensätzen oder eine unerwartete Änderung am Schema können dazu führen, dass die Tabellen einer Pipeline ab einem bestimmten bekannten Zeitpunkt fehlerhaft sind. Rewind bringt die Pipeline an einen Punkt vor dem Problem zurück, sodass Sie eine Lösung bereitstellen und nur die betroffenen Daten neu verarbeiten können.
Rewind stellt Tabellenversionen, Streaming-Quell-Offsets und den Operatorstatus gemeinsam wieder her, sodass Replay keine Datensätze überspringt oder Duplikate schreibt. Drei Operationen verarbeiten Daten neu und lösen verschiedene Probleme:
- Zurückspulen ist für eine wiederherstellbare Pipeline gedacht, die ab einem bekannten Zeitpunkt fehlerhafte Daten geschrieben hat, etwa nach einer fehlerhaften Transformation, fehlerhaften Eingabedaten oder einer fehlerhaften Bereitstellung. Es stellt Tabellendaten, Quelloffsets und den Operatorstatus auf einen Punkt vor dem Problem wieder her und verarbeitet nur die betroffenen Daten erneut, wobei der Operatorstatus erhalten bleibt. Daten vor diesem Punkt sind unberührt.
- Full Refresh stellt eine Tabelle aus allen verfügbaren Quelldaten neu zusammen und verwirft deren aktuellen Inhalt. Nutze es, um alles von Grund auf neu zu berechnen oder wenn eine Codeänderung nicht mit dem bestehenden Zustand kompatibel ist.
- Der Checkpoint-Reset stellt eine Pipeline wieder her, deren Checkpoint ungültig oder beschädigt ist oder die durch eine Checkpoint-inkompatible Codeänderung blockiert wird. Er setzt den Kontrollpunkt zurück und setzt sich fort, während der aktuelle Inhalt der Tabelle erhalten bleibt. Rewind kann diese Fälle nicht wiederherstellen, da es die Kompatibilitätsregeln für strukturiertes Streaming nicht lockert.
Anforderungen
| Anforderung | Detail |
|---|---|
| Kanal | Die Pipeline muss sich auf dem Vorschau-Kanal befinden. Siehe Konfigurieren von Pipelines. |
| Konfiguration | Setze die Pipeline-Konfiguration pipelines.rewind.betaEnabled auf true, und führe die Pipeline einmal aus. Jeder Fluss wird erst nach Abschluss eines Updates mit aktivierter Zeitreise zurückspulbar. |
| Pipelinemodus | Triggerbasierte und kontinuierliche Pipelines. Der Echtzeitmodus wird nicht unterstützt. |
| Quellen | Delta-Tabellen, Streaming-Tabellen, Kafka und Auto Loader. |
| Ziele | Streamtabellen und materialisierte Ansichten. |
| Flows | Streaming-Flüsse und AUTO Change Data Capture (CDC)-Flüsse, einschließlich SCD Typ 1 und SCD Typ 2 Ziele. Zustandsbehaftete Abfragen wie Aggregationen, Joins und Deduplizierung werden unterstützt. |
Jeder Fluss in der Pipeline muss diese Anforderungen erfüllen. Während pipelines.rewind.betaEnabledtrue ist, schlagen bei einer Pipeline, die einen Flow enthält, der die Voraussetzungen nicht erfüllt, die Aktualisierungen fehl. Überprüfen Sie, dass jeder Fluss die oben genannten Anforderungen erfüllt, bevor Sie ihn aktivieren.
Note
Eine Pipeline, bei der true auf pipelines.rewind.betaEnabled gesetzt ist, kann nicht zum aktuellen Kanal zurückkehren, bis der aktuelle Kanal auf eine Runtime aktualisiert wird, die das Zurückspulen unterstützt.
Wie Rückspulen und Wiederholen funktionieren
Zurückspulen und wiederholen sind getrennte Schritte.
Rewind setzt jede Tabelle auf die Version zurück, die sie an einem Rewind-Punkt hatte, und setzt die Streaming-Checkpoints zurück, die protokollieren, wie weit jeder Flow gelesen hat. Deine Transformationen werden nicht ausgeführt, und keine Quelldaten werden neu verarbeitet.
Die Wiederholung erfolgt beim nächsten Start der Pipeline. Es verarbeitet ab dem Rückspulpunkt unter Verwendung der aktuellen Pipeline-Definition erneut, holt bis zum aktuellen Stand auf und setzt dann die normale inkrementelle Verarbeitung fort. Rewind startet die Pipeline nicht; starte sie daher selbst, wenn du bereit bist.
Die Pipeline erzeugt automatische Rückspulpunkte, etwa einmal pro Stunde, und speichert sie 7 Tage lang. Eine gerade erstellte Pipeline hat nichts, worauf man zurückspulen kann, bis sie die erste produziert.
Das Zurückspulen eines Datensatzes spult auch alle nachgelagerten Elemente in derselben Pipeline zurück. Rewind deckt eine Pipeline ab. Sie koordiniert sich nicht mit anderen Pipelines oder mit externen Readern derselben Tabellen, daher verwalten Sie diese separat.
Eine Pipeline über die Benutzeroberfläche zurücksetzen
Die Benutzeroberfläche und Genie sind die wichtigsten Möglichkeiten, rewind zu nutzen. Die Benutzeroberfläche zeigt die verfügbaren Wiederherstellungspunkte an und zeigt, welche Datensätze von ihnen jeweils betroffen sind, bevor du die Änderungen bestätigst.
- Klicken Sie auf Ihrer Pipeline-Seite auf das
neben Pipeline ausführen und klicken Sie dann auf Pipeline zurückspulen.
- Wählen Sie einen Rückspulpunkt oder verwenden Sie eine Abkürzung wie Rückspulen bis gestern oder Zurückspulen zum neuesten Punkt. Klicke auf Weiter.
- Wähle aus, welche Tabellen du einbeziehen möchtest. Verwenden Sie die Graph-Ansicht , um Datensätze im Pipeline-Graphen auszuwählen, oder die Listenansicht , um sie aus einer Tabelle auszuwählen. Lassen Sie Alle Prüfpunkte zurücksetzen ausgewählt (die Standardeinstellung), um Quell-Offsets und den Operatorstatus zusammen mit den Tabellendaten wiederherzustellen, sodass die Pipeline ab dem Rücksetzpunkt erneut verarbeitet wird. Lösche sie nur, um die Tabellendaten wiederherzustellen, ohne erneut zu verarbeiten, zum Beispiel wenn du den Inhalt einer Tabelle wiederherstellen möchtest, aber die betroffenen Daten nicht neu verarbeiten möchtest. Diese Einstellung muss für eine Tabelle und ihre Upstreams gleich sein und kann nicht für einen Fluss, der eine externe Quelle wie Kafka oder Auto Loader liest, gelöscht werden. Klicke auf Weiter.
- Überprüfen Sie den Wiederherstellungspunkt, die Checkpoint-Einstellungen und die betroffenen Datensätze und klicken Sie dann auf Zurückspulen.
Starte die Pipeline, um die Daten erneut abzuspielen.
Du kannst immer wieder zurückspulen. Jedes Zurückspulen ersetzt das letzte, sodass du dich nach einem fehlgeschlagenen Replay erholen kannst, indem du an eine andere Stelle zurückspulst.
Nach dem Rückspulen
Ein Fehler bei der Wiederausführung versetzt die Pipeline in einen vorherigen Zustand zurück, sie bleibt jedoch angehalten. Repariere den Code oder die Quelldaten und starte die Pipeline, um es erneut zu versuchen, oder spule zu einem anderen Punkt zurück. Die Pipeline rollt nicht von selbst zurück, und Fehler treten durch Standard-Pipeline-Diagnosen und das Ereignisprotokoll auf.
Replay ist nur erfolgreich, wenn die aktuelle Pipeline-Definition mit dem wiederhergestellten Zustand kompatibel ist; Rewind lockert die Kompatibilitätsregeln für strukturiertes Streaming nicht. Für welche Änderungen kompatibel sind, siehe Arten von Änderungen in Structured Streaming-Abfragen. Materialisierte Views folgen der Batch-Semantik und tolerieren umfassendere Schemaänderungen, scheitern aber trotzdem, wenn eine Abhängigkeit inkompatibel ist.
Ein fehlgeschlagener Rückspulvorgang kann die Pipeline teilweise zurückgespult hinterlassen. Sie haben zwei Möglichkeiten:
- Spult man erneut zum gleichen oder einem anderen Punkt zurück, konvergiert die Pipeline zu diesem Punkt.
- Um die Pipeline trotz des unvollständigen Rückspulvorgangs zu einem normalen Update zu zwingen, setzen Sie
pipelines.allowUpdateAfterIncompleteRewindauftrueund starten Sie die Pipeline neu.
Wie weit man zurückspulen kann
Rückspulpunkte werden 7 Tage gehalten. Innerhalb dieses Zeitfensters schlägt das Zurückspulen fehl, wenn die dafür benötigten Daten bereits entfernt wurden. Achten Sie auf Folgendes, bevor Sie sich auf die Rückspulfunktion verlassen:
-
VACUUModer ein kurzesdelta.deletedFileRetentionDurationauf Ihren Tischen. Siehe „Den Tabellenverlauf nutzen“. - Die Quellenbindung ist kürzer als das Zeitfenster, über das man zurückspulen möchte, wie bei einem Kafka-Thema, das einen Tag hält.
Pipelines mit mehreren Quellen oder langen Abhängigkeitsketten benötigen eine längere Aufbewahrungsdauer, weil jede Tabelle und jeder Checkpoint bis zu einem konsistenten Punkt zurückreichen muss.
Einschränkungen
- Rewind kann eine Pipeline nicht auf einen Punkt vor einer vollständigen Aktualisierung wiederherstellen.
- Wiederherstellungspunkte werden 7 Tage lang aufbewahrt, und eine Wiederherstellung schlägt fehl, wenn die Tabellenhistorie oder die Quelldaten, die benötigt werden, um diesen Punkt zu erreichen, bereits entfernt wurden, zum Beispiel durch
VACUUModer eine kurze Aufbewahrungsdauer der Quelldaten. Sieh mal, wie weit du zurückspulen kannst. - Der Echtzeitmodus wird nicht unterstützt.
- Kinesis, Pulsar, Google Pub/Sub und benutzerdefinierte Quellcodes, die mit den Datenquellen-APIs DSv2 oder Python erstellt wurden, werden nicht als Quellen unterstützt.
- Externe und benutzerdefinierte Senken werden nicht unterstützt, einschließlich Senken, die mit definiert sind
create_sink(). Siehe Verwenden von Senken in Pipelines. - Streaming-Tabellen, die einen Zeilenfilter oder eine Spaltenmaske verwenden, können nicht zurückgespult werden. Siehe Manuelles Anwenden von Zeilenfiltern und Spaltenmasken.
- Zustandsbehaftetes Zurücksetzen erfordert den RocksDB-State-Store, den Pipelines standardmäßig nutzen. Ein Rückspulen fehlschlägt bei einem Flow, der mit einem anderen Zustandsspeicher konfiguriert ist.
- Einige AUTO CDC-Streaming-Tabellen benötigen eine Aktualisierung, bevor sie zurückgespult werden können. Die Pipeline benachrichtigt Sie, wenn Sie die Rückspulung anfordern.
- Materialisierte Ansichten könnten nach einem Zurücksetzen vollständig neu berechnet werden, anstatt inkrementell aktualisiert zu werden. Siehe inkrementelle Aktualisierung für materialisierte Ansichten.
- Rewind deckt eine Pipeline ab und koordiniert nicht mit externen Readern oder anderen Pipelines, die dieselben Tabellen lesen.
- Rewind stellt weder Pipeline-Code, Pipeline-Konfiguration noch Unity-Catalog-Objektmetadaten wie Tags und Grants wieder her.