Úplná aktualizace streamovacích tabulek

Úplná aktualizace streamované tabulky zahodí všechna existující data a metadata a restartuje stream od začátku. Konkrétně zkrátí streamovací tabulku, odebere všechna data kontrolních bodů a restartuje proces streamování s novými kontrolními body pro každý tok, který do tabulky zapisuje. Tato stránka popisuje, kdy může být nutné spustit úplnou aktualizaci, a dopad spuštění úplné aktualizace. Obsahuje také osvědčené postupy týkající se úplných aktualizací.

Pokyny k aktivaci úplné aktualizace najdete v tématu Spuštění aktualizace kanálu.

Dopad na zdroje dat

Úplná aktualizace odebere všechna existující data ze streamované tabulky. Pokud má váš zdroj dat limity uchovávání dat , jako jsou témata Kafka s krátkými dobami uchovávání, můžou se některá historická data po úplné aktualizaci stát nedostupnou.

Pokud je zdrojem například Kafka s 24hodinovým uchováváním a po tomto okně spustíte úplnou aktualizaci, starší zprávy už nebudou dostupné a nejde je znovu zpracovat.

Poznámka:

Úplné obnovy se nedoporučují pro úlohy streamování s velkým objemem zátěže nebo pokud uchovávání dat v upstreamu brání přehrání historických dat.

Pokud streamovací tabulka obsahuje závislé odvozené tabulky, kanál selže, dokud tyto tabulky nebudou také plně aktualizovány, pokud není u streamovací tabulky povolena funkce skipChangeCommits. Podřízená materializovaná zobrazení musí být také plně aktualizována.

Kdy spustit úplnou aktualizaci

Úplné aktualizace v deklarativních kanálech Lakeflow Spark se musí aktivovat explicitně. Úplnou aktualizaci můžete spustit kliknutím na Úplné aktualizace v uživatelském rozhraní kanálu nebo povolením automatické úplné aktualizace ve službě Lakeflow Connect.

Úplná aktualizace se doporučuje, když změny brání v bezpečném obnovení streamovaného dotazu z existujícího kontrolního bodu nebo když by dříve zpracovávaná data byla nekonzistentní s aktualizovanou logikou, schématem nebo konfigurací zdroje. Následující části popisují běžné scénáře.

Změny schémat

Následující změny schématu v cílové tabulce nejsou zpětně kompatibilní a vyžadují úplnou aktualizaci:

  • Přejmenování sloupců bez povoleného režimu mapování sloupců
  • Změna deduplikačních sloupců
  • Úprava datových typů sloupců, včetně:
    • Zúžení typu (například BIGINT → INT nebo DOUBLE → FLOAT)
    • Nekompatibilní změny typu (například STRING → INT).
  • Pevné odstranění sloupců ze schématu tabulky

Pro tyto typy změn schématu databricks doporučuje vytvořit nový sloupec s požadovaným schématem nebo názvem a pak pomocí zobrazení nad tabulkou streamování sjednocovat staré a nové hodnoty.

Změny rozložení fyzických dat

Následující změny rozložení fyzických dat vyžadují úplnou aktualizaci:

  • Migrace ze starší verze dělení na nové schéma clusteringu

Změny zdroje v upstreamu

Následující nadřazené změny zdroje vyžadují úplnou aktualizaci:

  • Úprava zdrojových tabulek čtených streamovacím dotazem.
  • Přepínání mezi typy zdrojů (například Kafka na Delta nebo Auto Loader na Kafka).
  • Změna zdrojových umístění, jako jsou cesty k tabulce nebo přihlášení k odběru témat Kafka.
  • Vyřazení a opětovné vytvoření zdrojové tabulky Delta, i když schéma zůstane beze změny.

Změny stavového zpracování

Následující stavové změny zpracování vyžadují úplnou aktualizaci:

  • Úprava seskupovacích klíčů pro agregaci nebo agregačních funkcí.
  • Přidání nebo odebrání agregací
  • Změna spojovacích klíčů nebo typů spojení
  • Přidávání nebo odebírání spojení
  • Úprava sloupců odstranění duplicitních dat nebo logiky odstranění duplicit

Problémy se kontinuitou dat

Pokud dojde k ohrožení kontinuity dat, může se vyžadovat úplná aktualizace:

  • Kvůli vypršení platnosti uchovávání se protokoly CDC nedostupné.
  • Poškození nebo odstranění adresáře kontrolního bodu streamingu.
  • Poškození nebo ztráta monitorování schématu nebo souborů umístění schématu

Další informace o obnovení kanálu z selhání kontrolního bodu najdete v tématu Obnovení kanálu ze selhání kontrolního bodu streamování.

Omezení

Následující omezení platí pro úplné aktualizace. Informace, které vám pomůžou pracovat v rámci těchto omezení, najdete v osvědčených postupech .

  • Úplná aktualizace nezpracovává data znovu, pokud zdroj nezachová úplnou historickou datovou sadu.
  • Velké datové sady můžou provádět úplné aktualizace nákladně a časově náročné.
  • Podřízení příjemci, kteří závisí na tabulce, můžou selhat nebo vrátit neúplné výsledky, dokud se aktualizace nedokončila.

Osvědčené postupy

Situace Osvědčené postupy
Návrh pro stabilitu Naplánujte schéma tak, aby se zabránilo změnám, které vyžadují úplnou aktualizaci. Přidávání sloupců je obecně bezpečné, zatímco úpravy existujících sloupců nebo schémat oddílů obvykle vyžadují překomputování tabulky.
Streamování ze zdrojů s krátkými dobami uchovávání Streamování ze zdrojů, jako je téma Kafka, které nemají dlouhou dobu uchovávání, znamená, že úplná aktualizace ztratí data, která ještě nejsou ve zdroji.
Aby nedošlo ke ztrátě historických dat, převeďte nezpracovaná data do tabulky datového proudu (bronzová tabulka v architektuře medailónu). Pokud se změní nadřazená data, použijte flexibilní typy sloupců (například variantu nebo řetězec), abyste se vyhnuli této tabulce, která vyžaduje úplnou aktualizaci. Tato tabulka může ukládat historická data, která mohou používat podřízené streamovací tabulky (které mohou mít přísnější typy nebo jiné strukturální změny). Pokud podřízené tabulky vyžadují úplnou aktualizaci, tato tabulka obsahuje historická data a nevyžaduje úplnou aktualizaci.
Zvažte alternativy před spuštěním úplné aktualizace. Mezi alternativy patří:
  • Pokud změníte zdroj toku, zvažte vytvoření nového toku místo aktualizace stávajícího toku tabulky streamování. Tím se zachová stávající data v tabulce, ale můžou se zapsat duplicitní data, protože nový tok má nový kontrolní bod.
  • Případně můžete kontrolní bod resetovat, ale to může vést k duplicitním datům, která se zapisují do cílové tabulky.
  • Pokud není žádná z možností přijatelná, zvažte vytvoření nové tabulky streamování a použití zobrazení ke sjednocení starých a nových streamovaných tabulek.
Pokud je vyžadována úplná aktualizace Pokud je vyžadována úplná aktualizace, postupujte podle těchto osvědčených postupů:
  • Otestujte operaci ve vývojovém nebo přípravném prostředí.
  • Zdokumentujte podřízené závislosti, které jsou ovlivněny.
  • Naplánujte aktualizaci během časového období údržby, abyste minimalizovali dopad na produkční úlohy.
  • Ujistěte se, že zdrojový systém uchovává dostatek historických dat k rekonstrukci datového proudu.

Pokud chcete obnovit data po úplné aktualizaci, můžete vytvořit append oncetok. Tím se provede jednorázové doplnění, aniž by pokračovalo ve spuštění po prvním doplnění. Kód zůstane ve vašem datovém kanálu a pokud dojde k plné aktualizaci, znovu se spustí doplnění chybějících dat.