Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
Belangrijk
Deze functie bevindt zich in de bètaversie. Om dit in te schakelen, stel je je pipeline in op het Preview-kanaal en zet je de pipelines.rewind.betaEnabled pipelineconfiguratie op true. Raadpleeg Vereisten.
Een slechte transformatie, een onjuist gevormde batch bronrecords of een onverwachte schemawijziging kan ervoor zorgen dat de tabellen in een pipeline vanaf een bepaald bekend tijdstip onjuist zijn. Rewind brengt de pipeline terug naar een punt vóór het probleem zodat je een fix kunt implementeren en alleen de getroffen data opnieuw kunt verwerken.
Rewind herstelt tabelversies, streaming source offsets en operatorstatus samen, zodat replay geen records overslaat of duplicaten schrijft. Drie bewerkingen verwerken data opnieuw en lossen verschillende problemen op:
- Rewind is bedoeld voor een te herstellen pipeline die vanaf een bekend moment onjuiste gegevens heeft weggeschreven, bijvoorbeeld na een foutieve transformatie, ongeldige invoer of een foutieve code-uitrol. Het herstelt tabelgegevens, bronoffsets en operatorstatus tot een punt vóór het probleem en verwerkt alleen de getroffen data opnieuw, waarbij de operatorstatus behouden blijft. Data van vóór dat punt blijft onaangeroerd.
- Full refresh bouwt een tabel opnieuw op uit alle beschikbare brongegevens en verwijdert de huidige inhoud. Gebruik het om alles opnieuw te berekenen, of wanneer een codewijziging niet compatibel is met de bestaande toestand.
- Checkpoint-reset herstelt een pijplijn waarvan het checkpoint ongeldig of corrupt is, of dat wordt geblokkeerd door een codewijziging die niet compatibel is met checkpoint. Het checkpoint wordt hersteld en het proces gaat verder, met behoud van de huidige inhoud van de tabel. Rewind kan deze gevallen niet herstellen, omdat het de compatibiliteitsregels voor gestructureerde streaming niet versoepelt.
Requirements
| Requirement | Detail |
|---|---|
| Channel | De pijplijn moet op het Preview-kanaal staan. Zie Pijplijnen configureren. |
| Configuration | Stel de pipelines.rewind.betaEnabled pijplijnconfiguratie in op true, en voer de pijplijn één keer uit. Elke stroom wordt pas terugspoelbaar nadat een update met tijdreizen ingeschakeld is voltooid. |
| Pijplijnmodus | Geactiveerde en doorlopende pipelines. Real-time modus wordt niet ondersteund. |
| Bronnen | Delta-tafels, streaming-tafels, Kafka en Auto Loader. |
| Targets | Streaming-tabellen en gematerialiseerde weergaven. |
| Flows | Streamingstromen en AUTO-stromen voor het vastleggen van wijzigingsgegevens (CDC), inclusief doelen van het type SCD 1 en SCD 2. Statusvolle query's zoals aggregaties, samenvoegingen en deduplicatie worden ondersteund. |
Elke stroom in de leiding moet aan deze eisen voldoen. Hoewel pipelines.rewind.betaEnabledtrue is, mislukken de updates van een pipeline die een flow bevat die niet in aanmerking komt. Controleer of elke flow aan bovenstaande eisen voldoet voordat je hem inschakelt.
Note
Een pijplijn waarvoor pipelines.rewind.betaEnabled is ingesteld op true kan niet terugkeren naar het kanaal Huidig totdat het kanaal Huidig is bijgewerkt naar een runtime die terugspoelen ondersteunt.
Hoe terugspoelen en opnieuw afspelen werkt
Terugspoelen en opnieuw afspelen zijn aparte stappen.
Rewind herstelt elke tabel naar de versie die deze bij een terugspoelpunt had en reset de streaming-checkpoints die bijhouden hoe ver elke flow heeft gelezen. Je transformaties worden niet uitgevoerd en er wordt geen brondata opnieuw verwerkt.
De herhaling vindt plaats de volgende keer dat de pipeline draait. Het verwerkt opnieuw vanaf het terugspoelpunt met de huidige definitie van de pijplijn, werkt vervolgens bij tot het huidige moment en hervat daarna de normale incrementele verwerking. Rewind start de pipeline niet, dus begin er zelf mee wanneer je er klaar voor bent.
De pijplijn genereert automatisch terugspoelpunten, ongeveer eens per uur, en bewaart ze 7 dagen. Een pipeline die je net hebt gemaakt, kan nergens naar terugspoelen totdat deze zijn eerste resultaat produceert.
Het terugdraaien van een dataset draait ook alles wat erna komt in dezelfde pijplijn terug. Rewind dekt één pijpleiding. Het coördineert niet met andere pijplijnen of met externe lezers van dezelfde tabellen, dus beheer die apart.
Spoel een pijplijn terug met behulp van de gebruikersinterface
De gebruikersinterface en Genie zijn de belangrijkste manieren om terugspoelen te gebruiken. De gebruikersinterface somt de beschikbare herstelpunten op en laat zien op welke datasets elk herstelpunt van invloed is voordat je de wijziging doorvoert.
- Klik op de pipelinepagina op de knop met het
naast Pipeline uitvoeren en klik vervolgens op Pipeline terugspoelen.
- Selecteer een terugspoelpunt, of gebruik een snelkoppeling zoals Terugspoelen naar gisteren of Terugspoelen naar het laatste punt. Klik op Next.
- Selecteer welke tabellen je wilt opnemen. Gebruik de grafiekweergave om datasets in de pijplijngrafiek te selecteren, of de lijstweergave om ze uit een tabel te selecteren. Laat Alle checkpoints resetten geselecteerd staan (de standaardoptie) om bronoffsets en de status van de operator samen met de tabelgegevens te herstellen, zodat de pijplijn opnieuw wordt verwerkt vanaf het terugspoelpunt. Maak het schoon om alleen de tabelgegevens te herstellen, zonder opnieuw te verwerken, bijvoorbeeld wanneer je wilt dat de inhoud van een tabel wordt hersteld maar de getroffen data niet opnieuw wilt verwerken. Deze instelling moet hetzelfde zijn voor een tabel en haar upstreams, en kan niet worden gewist voor een flow die een externe bron leest, zoals Kafka of Auto Loader. Klik op Next.
- Bekijk het terugspoelpunt, de checkpoint-instelling en de getroffen datasets, en klik dan op Terugspoelen.
Start de pipeline om de data opnieuw af te spelen.
Je kunt herhaaldelijk terugspoelen. Elke terugspoeling vervangt de vorige, zodat je een mislukte herhaling kunt herstellen door ergens anders terug te spoelen.
Na het terugspoelen
Een herhalingsfout laat de pijpleiding terugspoelen maar stoppen. Repareer de code of de brondata en start de pijplijn om het opnieuw te proberen, of spoel terug naar een ander punt. De pijplijn rolt niet vanzelf terug en fouten verschijnen via standaard pijplijndiagnostiek en het gebeurtenislogboek.
Replay slaagt alleen als de huidige pijplijndefinitie compatibel is met de herstelde toestand; rewind versoepelt de compatibiliteitsregels voor gestructureerde streaming niet. Voor welke wijzigingen compatibel zijn, zie Soorten wijzigingen in Structured Streaming-queries. Gematerialiseerde weergaven volgen batchsemantiek en tolereren bredere schemawijzigingen, maar falen nog steeds als een afhankelijkheid niet compatibel is.
Een terugspoelactie die halverwege mislukt, kan de pipeline gedeeltelijk teruggespoeld achterlaten. U hebt twee opties:
- Spoel opnieuw terug naar hetzelfde punt of een ander punt, en de pijplijn convergeert op dat punt.
- Om de pipeline te dwingen een normale update te starten ondanks de onvolledige terugspoeling, zet
pipelines.allowUpdateAfterIncompleteRewindtrueen start de pipeline opnieuw.
Hoe ver terug je kunt terugspoelen
Terugspoelpunten worden 7 dagen bewaard. Binnen dat venster faalt een terugspoelen als de benodigde data al is verwijderd. Controleer eerst het volgende voordat je op Terugspoelen vertrouwt:
-
VACUUMof een kortedelta.deletedFileRetentionDurationop uw tafels. Zie Werken met tabelgeschiedenis. - De bewaartermijn van de brongegevens is korter dan de periode waarover je wilt teruggaan, zoals bij een Kafka-topic waarin gegevens maar één dag worden bewaard.
Pijplijnen met meerdere bronnen of lange afhankelijkheidsketens hebben meer retentie nodig, omdat elke tabel en checkpoint moet teruggaan naar een consistent punt.
Limitations
- Rewind kan een pipeline niet herstellen naar een punt vóór een volledige vernieuwing.
- Terugspoelpunten worden 7 dagen bewaard, en het terugspoelen mislukt als de tabelgeschiedenis of brongegevens die nodig zijn om dat punt te bereiken al zijn verwijderd, bijvoorbeeld door
VACUUMof door een korte bewaartermijn voor de brongegevens. Kijk hoe ver je terug kunt spoelen. - Real-time modus wordt niet ondersteund.
- Kinesis, Pulsar, Google Pub/Sub en aangepaste bronnen die zijn gebouwd met de DSv2- of Python-databron-API's worden niet als bronnen ondersteund.
- Externe en aangepaste sinks worden niet ondersteund, inclusief sinks gedefinieerd met
create_sink(). Zie Sinks gebruiken in pijplijnen. - Streamingtabellen die een rijfilter of een kolommasker gebruiken, kunnen niet worden teruggezet. Zie Rijfilters en kolommaskers handmatig toepassen.
- Stateful rewind vereist de RocksDB state store, die standaard door pipelines wordt gebruikt. Het terugspoelen mislukt bij een flow die met een andere statusopslag is geconfigureerd.
- Sommige AUTO CDC-streamingtabellen moeten worden ververst voordat ze kunnen worden teruggedraaid. De pipeline laat je weten wanneer je om terugspoeling vraagt.
- Gematerialiseerde weergaven worden na een rewind mogelijk volledig opnieuw berekend in plaats van incrementeel ververst. Zie Stapsgewijze vernieuwing voor gematerialiseerde weergaven.
- Rewind bestrijkt één pijplijn en coördineert niet met externe lezers of andere pijplijnen die dezelfde tabellen lezen.
- Rewind herstelt geen pijplijncode, pijplijnconfiguratie of Unity Catalog-objectmetadata zoals tags en toekenningen.