Sdílet prostřednictvím


Transformovat data

Tento článek obsahuje úvod a přehled transformace dat pomocí Azure Databricks. Transformace dat nebo příprava dat je klíčovým krokem ve všech úlohách přípravy, analýzy a strojového učení.

Ukázkové vzory a doporučení v tomto článku se zaměřují na práci s datovými tabulkami lakehouse, které podporuje technologie Delta Lake. Protože Delta Lake poskytuje záruky ACID databricks lakehouse, můžete při práci s daty v jiných formátech nebo datových systémech sledovat jiné chování.

Databricks doporučuje ingestovat data do jezera v nezpracovaném nebo téměř nezpracovaném stavu a pak použít transformace a rozšiřování jako samostatný krok zpracování. Tento model se označuje jako architektura medailonu. Podívejte se, co je architektura jezera medallion?

Pokud víte, že data, která potřebujete transformovat, ještě nebyla načtena do jezera, přečtěte si téma Ingestování dat do Databricks Lakehouse. Pokud se pokoušíte najít data lakehouse za účelem zápisu transformací, přečtěte si téma Zjišťování dat.

Všechny transformace začínají zápisem dávkového nebo streamovacího dotazu na zdroj dat. Pokud nejste obeznámeni s dotazováním dat, přečtěte si téma Dotazování na data.

Po uložení transformovaných dat do tabulky Delta můžete tuto tabulku použít jako tabulku funkcí pro ML. Viz Technická příprava a obsluha funkcí.

Poznámka:

Články zde popisují transformace v Azure Databricks. Azure Databricks také podporuje připojení k mnoha běžným platformám pro přípravu dat. Viz Připojení k partnerům pro přípravu dat pomocí Partner Connect.

Transformace Sparku vs. transformace lakehouse

Tento článek se zaměřuje na definování tranformací v souvislosti s T v ETL nebo ELT. Model zpracování Apache Sparku také používá transformaci slov souvisejícím způsobem. Stručně řečeno: V Apache Sparku jsou všechny operace definovány jako transformace nebo akce.

  • Transformace: Přidejte do plánu logiku zpracování. Mezi příklady patří čtení dat, spojení, agregace a přetypování typů.
  • Akce: Aktivace logiky zpracování pro vyhodnocení a výstup výsledku Mezi příklady patří zápisy, zobrazení nebo zobrazení náhledu výsledků, ruční ukládání do mezipaměti nebo získání počtu řádků.

Apache Spark používá opožděný model spouštění , což znamená, že žádná logika definovaná kolekcí operací se nevyhodnocuje, dokud se neaktivuje akce. Tento model má důležitou důsledky při definování kanálů zpracování dat: výsledky se ukládají zpět do cílové tabulky pouze pomocí akcí.

Vzhledem k tomu, že akce představují kritický bod zpracování pro optimalizaci logiky, služba Azure Databricks přidala k těm, které už existují v Apache Sparku, řadu optimalizací, aby se zajistilo optimální spuštění logiky. Tyto optimalizace berou v úvahu všechny transformace aktivované danou akcí najednou a najdou optimální plán na základě fyzického rozložení dat. Ruční ukládání dat do mezipaměti nebo vrácení výsledků náhledu v produkčních kanálech může tyto optimalizace přerušit a vést k významnému zvýšení nákladů a latence.

Proto můžeme definovat transformaci lakehouse jako jakoukoliv množinu operací aplikovaných na jednu nebo více tabulek lakehouse, které vedou k vytvoření nové tabulky lakehouse. Všimněte si, že zatímco transformace, jako jsou spojení a agregace, jsou popsány samostatně, můžete sloučit mnoho těchto vzorů v jednom kroku zpracování a důvěřovat optimalizátorům v Azure Databricks a najít nejúčinnější plán.

Jaké jsou rozdíly mezi streamováním a dávkovém zpracováním?

Zatímco streamování a dávkové zpracování používají ve službě Azure Databricks většinu stejné syntaxe, každá z nich má svou vlastní sémantiku.

Dávkové zpracování umožňuje definovat explicitní instrukce pro zpracování pevného množství statických, neměňovaných dat jako jedné operace.

Zpracování datových proudů umožňuje definovat dotaz na nevázanou, nepřetržitě rostoucí datovou sadu a pak zpracovávat data v malých přírůstkových dávkách.

Dávkové operace v Azure Databricks používají Spark SQL nebo Datové rámce, zatímco zpracování datových proudů využívá strukturované streamování.

Dávkové příkazy Apache Sparku můžete odlišit od strukturovaného streamování tak, že se podíváte na operace čtení a zápisu, jak je znázorněno v následující tabulce:

Apache Spark Strukturované streamování
Přečíst spark.read.load() spark.readStream.load()
Zapsat spark.write.save() spark.writeStream.start()

Materializovaná zobrazení obecně odpovídají zárukám dávkového zpracování, i když se Delta Live Tables používají k výpočtu výsledků přírůstkově, pokud je to vhodné. Výsledky vrácené materializovaným zobrazením jsou vždy ekvivalentní dávkovému vyhodnocení logiky, ale Azure Databricks se snaží tyto výsledky zpracovat přírůstkově, pokud je to možné.

Streamované tabulky vždy počítají výsledky přírůstkově. Vzhledem k tomu, že mnoho streamovaných zdrojů dat uchovává záznamy pouze po dobu hodin nebo dnů, model zpracování používaný streamovanými tabulkami předpokládá, že každá dávka záznamů ze zdroje dat se zpracovává pouze jednou.

Azure Databricks podporuje použití SQL k zápisu streamovaných dotazů v následujících případech použití:

  • Definování streamovaných tabulek v katalogu Unity pomocí Databricks SQL
  • Definování zdrojového kódu pro pipeliny Delta Live Tables.

Poznámka:

Streamované tabulky můžete také deklarovat v Delta Live Tables pomocí strukturovaného kódu streamování v Pythonu.

Dávkové transformace

Dávkové transformace pracují s dobře definovanou sadou datových prostředků v určitém bodu v čase. Dávkové transformace můžou být jednorázové operace, ale často jsou součástí naplánovaných úloh nebo kanálů, které běží pravidelně, aby byly produkční systémy aktuální.

Přírůstkové transformace

Přírůstkové vzory obecně předpokládají, že zdroj dat je pouze pro přidávání a má stabilní schéma. Následující články obsahují podrobnosti o nuancích přírůstkových transformací v tabulkách, které mají zkušenosti s aktualizacemi, odstraněními nebo změnami schématu:

Transformace v reálném čase

Delta Lake poskytuje téměř v reálném čase přístup k velkým objemům dat pro všechny uživatele a aplikace dotazující se na vaše jezero, ale kvůli režii při zápisu souborů a metadat do cloudového úložiště objektů není možné dosáhnout skutečné latence v reálném čase u mnoha úloh, které zapisují do jímek Delta Lake.

Pro aplikace streamování s extrémně nízkou latencí doporučuje Databricks zvolit systémy zdroje a jímky navržené pro úlohy v reálném čase, jako je Kafka. Azure Databricks můžete použít k obohacení dat, včetně agregací, spojení mezi datovými proudy a připojení streamovaných dat s pomalými změnami dat dimenzí uložených v jezeře.