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 lakehouse tables, který je založen na technologii 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.

Jakmile uložíte transformovaná data do tableDelta, můžete tuto table použít jako funkci table pro ML. Viz Technická příprava a obsluha funkcí.

Poznámka:

Články zde popisují transformace v Azure Databricks. Azure Databricks také podporuje connections na mnoho běžných platforem 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žitý důsledek při definování potrubí pro zpracování dat: k uložení výsledků zpět do cílového tablepoužijte pouze akce.

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 jakoukoli kolekci operací použitých na jeden nebo více lakehousů tables, které vedou k vytvoření nového lakehouse table. 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ích table:

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

Materializované views obecně odpovídají zárukám dávkového zpracování, i když je k výpočtu výsledků používáno Delta Live Tables, pokud je to možné. 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é.

Streamování tables vždy vypočítává výsledky přírůstkově. Vzhledem k tomu, že mnoho streamovaných zdrojů dat uchovává záznamy jenom po dobu hodin nebo dnů, model zpracování používaný streamováním tables 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í streamování tables v Unity Catalog pomocí Databricks SQL.
  • Definování zdrojového kódu pro kanály Delta Live Tables

Poznámka:

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

Dávkové transformace

Dávkové transformace pracují s dobře definovanými set datovými zdroji v určitém časovém okamžiku. 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í schema. Následující články obsahují podrobné informace o nuancích přírůstkových transformací v tables, které zahrnují aktualizace, mazání nebo změny v schema:

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.