Sdílet prostřednictvím


Vývoj deklarativních kanálů Sparku pro Lakeflow

Vývoj a testování kódu kanálu se liší od jiných úloh Apache Sparku. Tento článek obsahuje přehled podporovaných funkcí, osvědčených postupů a aspektů při vývoji kódu kanálu. Další doporučení a osvědčené postupy najdete v tématu Použití osvědčených postupů pro vývoj softwaru a DevOps v kanálech.

Poznámka:

Abyste ověřili kód nebo spustili aktualizaci, musíte do konfigurace kanálu přidat zdrojový kód. Viz Konfigurace kanálů.

Jaké soubory jsou platné pro zdrojový kód kanálu?

Kód pipeline může být v Pythonu nebo SQL. Můžete mít kombinaci souborů zdrojového kódu Pythonu a SQL, které zálohují jeden kanál, ale každý soubor může obsahovat pouze jeden jazyk. Viz Vyvíjejte kód pipeline pomocí Pythonu a vyvíjejte deklarativní pipeline Lakeflow Spark pomocí SQL.

Zdrojové soubory pro kanály jsou uložené ve vašem pracovním prostoru. Soubory pracovního prostoru představují skripty Pythonu nebo SQL vytvořené v Editoru kanálů Lakeflow. Soubory můžete také upravovat místně v preferovaném integrovaném vývojovém prostředí (IDE) a synchronizovat je s pracovním prostorem. Informace o souborech v pracovním prostoru najdete v tématu Co jsou soubory pracovního prostoru?. Informace o úpravách pomocí Editoru kanálů Lakeflow najdete v tématu Vývoj a ladění kanálů ETL pomocí Editoru kanálů Lakeflow. Informace o vytváření kódu v místním integrovaném vývojovém prostředí viz Vývoj kódu pipeline v místním vývojovém prostředí.

Pokud vyvíjíte kód Pythonu jako moduly nebo knihovny, musíte kód nainstalovat a importovat a pak volat metody ze souboru Pythonu nakonfigurovaného jako zdrojový kód. Viz Správa závislostí Pythonu pro kanály.

Poznámka:

Pokud potřebujete v poznámkovém bloku Pythonu použít libovolné příkazy SQL, můžete použít vzor syntaxe spark.sql("<QUERY>") ke spuštění SQL jako kódu Pythonu.

Funkce katalogu Unity umožňují registrovat libovolné uživatelem definované funkce Pythonu pro použití v SQL. Viz uživatelem definované funkce (UDF) v katalogu Unity.

Přehled funkcí pro vývoj potrubí

Kanály rozšiřují a využívají mnoho vývojových funkcí Azure Databricks a přinášejí nové funkce a koncepty. Následující tabulka obsahuje stručný přehled konceptů a funkcí, které podporují vývoj kódu kanálu:

Vlastnost Description
Režim vývoje Interaktivní spouštění kanálů (výběrem možnosti aktualizace prostřednictvím Editoru kanálů Lakeflow) bude používat vývojový režim. Nová potrubí běží s vypnutým režimem vývoje, když se spouští automaticky plánovaně nebo pomocí automatizovaného spouštěče. Viz Režim vývoje.
Zkouška na sucho Aktualizace suchého spuštění ověřuje správnost zdrojového kódu kanálu bez spuštění aktualizace u všech tabulek. Viz Zkontrolujte potrubí na chyby bez čekání na aktualizaci tabulek.
Editor kanálů Lakeflow Soubory Pythonu a SQL nakonfigurované jako zdrojový kód pro kanály poskytují interaktivní možnosti pro ověřování kódu a spouštění aktualizací. Viz Vývoj a ladění kanálů ETL pomocí Editoru kanálů Lakeflow.
Parametry Využijte parametry v konfiguraci zdrojového kódu a kanálu ke zjednodušení testování a rozšiřitelnosti. Viz Použití parametrů v pipelinech.
Sady zdrojů Databricks Sady prostředků Databricks umožňují přesouvat konfigurace kanálů a zdrojový kód mezi pracovními prostory. Viz Převod kanálu na projekt Sady prostředků Databricks.

Vytvoření ukázkových datových sad pro vývoj a testování

Databricks doporučuje vytvářet vývojové a testovací datové sady pro testování logiky pracovního postupu s očekávanými daty a potenciálně nesprávnými nebo poškozenými záznamy. Existují různé způsoby vytváření datových sad, které můžou být užitečné pro vývoj a testování, včetně následujících:

  • Vyberte podmnožinu dat z produkční datové sady.
  • Použijte anonymizovaná nebo uměle generovaná data pro zdroje obsahující PII. Pokud chcete zobrazit kurz, který používá knihovnu faker k vygenerování dat pro testování, přečtěte si kurz: Vytvoření kanálu ETL pomocí zachytávání dat změn.
  • Vytváření testovacích dat s dobře definovanými výsledky na základě logiky podřízené transformace
  • Předvídejte potenciální poškození dat, nesprávně formátované záznamy a změny ve výchozích datech vytvořením záznamů, které neodpovídají očekáváním schématu dat.

Pokud máte například soubor, který definuje datovou sadu pomocí následujícího kódu:

CREATE OR REFRESH STREAMING TABLE input_data
AS SELECT * FROM STREAM read_files(
  "/production/data",
  format => "json")

Pomocí následujícího dotazu můžete vytvořit ukázkovou datovou sadu obsahující podmnožinu záznamů:

CREATE OR REFRESH MATERIALIZED VIEW input_data AS
SELECT "2021/09/04" AS date, 22.4 as sensor_reading UNION ALL
SELECT "2021/09/05" AS date, 21.5 as sensor_reading

Následující příklad ukazuje filtrování publikovaných dat pro vytvoření podmnožinu produkčních dat pro vývoj nebo testování:

CREATE OR REFRESH MATERIALIZED VIEW input_data AS SELECT * FROM prod.input_data WHERE date > current_date() - INTERVAL 1 DAY

Pokud chcete použít tyto různé datové sady, vytvořte několik kanálů se zdrojovým kódem, který implementuje logiku transformace. Každý kanál může číst data z input_data datové sady, ale je nakonfigurovaný tak, aby zahrnoval soubor, který vytvoří datovou sadu specifickou pro dané prostředí.

Jak datové sady kanálu zpracovávají data?

Následující tabulka popisuje, jak materializovaná zobrazení, streamované tabulky a pohledy zpracovávají data:

Typ datové sady Jak se zpracovávají záznamy prostřednictvím definovaných dotazů?
Tabulka pro streamování Každý záznam se zpracuje přesně jednou. To předpokládá zdroj, do kterého lze data pouze přidávat.
Materializované zobrazení Záznamy se zpracovávají tak, aby vracely přesné výsledky pro aktuální stav dat. Materializovaná zobrazení by se měla používat pro úlohy zpracování dat, jako jsou transformace, agregace nebo předpočítací pomalé dotazy a často používané výpočty. Výsledky se ukládají do mezipaměti mezi aktualizacemi.
Zobrazit Záznamy se zpracovávají pokaždé, když je na zobrazení vznesen dotaz. Zobrazení slouží k přechodným transformacím a kontrolám kvality dat, které by se neměly publikovat do veřejných datových sad.

Deklarujte první datové sady v datových kanálech

Pipeline představují novou syntaxi pro Python a SQL. Pokud se chcete seznámit se základy syntaxe pipeline, přečtěte si téma Vývoj kódu pipeline pomocí Pythonu a Vývoj kódu deklarativních pipeline Lakeflow Spark pomocí SQL.

Poznámka:

Kanály oddělují definice datových sad od zpracování aktualizací a zdroj kanálu není určený k interaktivnímu spuštění.

Jak konfigurujete kanály?

Nastavení pro pipeline spadají do dvou širokých kategorií:

  1. Konfigurace, které definují kolekci souborů (označovaných jako zdrojový kód), které k deklaraci datových sad používají syntaxi kanálu.
  2. Konfigurace, které řídí infrastrukturu kanálů, správu závislostí, zpracování aktualizací a způsob ukládání tabulek v pracovním prostoru.

Většina konfigurací je volitelná, ale některé vyžadují pečlivou pozornost, zejména při konfiguraci produkčních kanálů. Patří mezi ně následující:

  • Pokud chcete zpřístupnit data mimo kanál, musíte deklarovat cílové schéma k publikování do katalogu Hive Metastore nebo cílový katalog a cílové schéma k publikování do katalogu Unity.
  • Oprávnění pro přístup k datům se konfigurují prostřednictvím clusteru používaného ke spuštění. Ujistěte se, že váš cluster má nakonfigurovaná příslušná oprávnění pro zdroje dat a cílové umístění úložiště , pokud je zadáno.

Podrobnosti o použití Pythonu a SQL k zápisu zdrojového kódu pro kanály najdete v referenční příručce k jazyku Pipeline SQL a referenční příručce k Pythonu pro deklarativní kanály Lakeflow Spark.

Další informace o nastaveních a konfiguracích kanálu najdete v tématu Konfigurace kanálů.

Nasaďte své první potrubí a spusťte aktualizace

Pokud chcete zpracovávat data pomocí protokolu SDP, nakonfigurujte kanál. Po nakonfigurování kanálu můžete aktivovat aktualizaci pro výpočet výsledků pro každou datovou sadu v kanálu. Pokud chcete začít používat kanály, přečtěte si kurz: Vytvoření kanálu ETL pomocí zachytávání dat změn.

Co je aktualizace pipeline?

Potrubí nasazují infrastrukturu a přepočítají stav dat při spuštění aktualizace. Aktualizace provede následující:

  • Spustí cluster se správnou konfigurací.
  • Vyhledá všechny definované tabulky a zobrazení a vyhledá všechny chyby analýzy, jako jsou neplatné názvy sloupců, chybějící závislosti a chyby syntaxe.
  • Vytvoří nebo aktualizuje tabulky a zobrazení s nejnovějšími dostupnými daty.

Kanály se můžou spouštět nepřetržitě nebo podle plánu v závislosti na požadavcích na náklady a latenci vašeho případu použití. Viz Spuštění aktualizace pipeline.

Příjem dat pomocí kanálů

Kanály podporují všechny zdroje dat dostupné v Azure Databricks.

Databricks doporučuje používat streamované tabulky pro většinu případů příjmu dat. Pro soubory přicházející do cloudového objektového úložiště doporučuje Databricks Auto Loader. Data můžete přímo načítat pomocí kanálu z většiny sběrnic zpráv.

Další informace o konfiguraci přístupu ke cloudovému úložišti najdete v tématu Konfigurace cloudového úložiště.

Pro formáty, které Auto Loader nepodporuje, můžete použít Python nebo SQL k dotazování jakéhokoliv formátu podporovaného Apache Sparkem. Viz Načtení dat v kanálech.

Monitorování a vynucování kvality dat

Pomocí očekávání můžete určit ovládací prvky kvality dat v obsahu datové sady. Na rozdíl od omezení CHECK v tradiční databázi, které zabraňuje přidání záznamů nesplňujících toto omezení, poskytují očekávání flexibilitu při zpracování dat, která nesplňují požadavky na kvalitu dat. Tato flexibilita umožňuje zpracovávat a ukládat data, která očekáváte, že budou nepořádná a data, která musí splňovat přísné požadavky na kvalitu. Viz Spravujte kvalitu dat pomocí požadavků na datový potrubí.

SDP rozšiřuje funkce Delta Lake. Vzhledem k tomu, že tabulky vytvořené a spravované kanály jsou tabulky Delta, mají stejné záruky a funkce poskytované Delta Lake. Podívejte se, co je Delta Lake v Azure Databricks?

Pipelines, kromě mnoha vlastností tabulky, které lze nastavit v Delta Lake, přidávají několik dalších vlastností tabulky. Viz odkaz na vlastnosti kanálu a odkaz na vlastnosti tabulky Delta.

Jak jsou tabulky vytvářeny a spravovány pomocí datových kanálů

Azure Databricks automaticky spravuje tabulky vytvořené datovými toky a určuje, jak je potřeba zpracovat aktualizace, aby se správně vypočítal aktuální stav tabulek, a provádí různé úlohy údržby a optimalizace.

U většiny operací byste měli kanálu povolit zpracování všech aktualizací, vložení a odstranění do cílové tabulky. Podrobnosti a omezení najdete v tématu Zachování ručních odstranění nebo aktualizací.

Úlohy údržby prováděné potrubími

Azure Databricks provádí úlohy údržby u tabulek spravovaných kanály s optimálním tempem pomocí prediktivní optimalizace. Údržba může zlepšit výkon dotazů a snížit náklady odebráním starých verzí tabulek. To zahrnuje operace OPTIMIZE a VACUUM v plné míře. Úlohy údržby se provádějí podle plánu, který je určený prediktivní optimalizací, a pouze v případě, že od předchozí údržby byla spuštěna aktualizace datového kanálu.

Informace o tom, jak často se spouští prediktivní optimalizace, a vysvětlení nákladů na údržbu, najdete v referenčních informacích k tabulce systému prediktivní optimalizace.

Omezení

Seznam omezení najdete v tématu Omezení kanálu.

Seznam požadavků a omezení specifických pro používání kanálů s katalogem Unity najdete v tématu Použití katalogu Unity s kanály.

Dodatečné zdroje