Dela via


Utveckla deklarativa pipelines för Lakeflow

Utveckling och testning av pipelinekod skiljer sig från andra Apache Spark-arbetsbelastningar. Den här artikeln innehåller en översikt över funktioner, metodtips och överväganden som stöds när du utvecklar pipelinekod. För fler rekommendationer och bästa praxis, se Tillämpning av bästa praxis för programvaruutveckling och DevOps på de deklarativa Lakeflow-pipelines.

Anmärkning

Du måste lägga till källkod i en pipelinekonfiguration för att verifiera kod eller köra en uppdatering. Se Konfigurera deklarativa pipelines för Lakeflow.

Vilka filer är giltiga för pipeline-källkod?

Lakeflow Deklarativa pipelines-kod kan vara Python eller SQL. Du kan ha en blandning av Python- och SQL-källkodsfiler som stöder en enda pipeline, men varje fil kan bara innehålla ett språk. Se Utveckla pipelinekod med Python och Utveckla pipelinekod med SQL.

Källfiler för pipelines lagras på din arbetsyta. Arbetsytefiler representerar Python- eller SQL-skript som skapats i Lakeflow Pipelines-redigeraren. Du kan också redigera filerna lokalt i önskad IDE och synkronisera till arbetsytan. Information om filer på arbetsytan finns i Vad är arbetsytefiler?. Information om redigering med Lakeflow Pipelines-redigeraren finns i Utveckla och felsöka ETL-pipelines med Lakeflow Pipelines Editor. Information om hur du redigerar kod i en lokal IDE finns i Utveckla Kod för deklarativa pipelines för Lakeflow i din lokala utvecklingsmiljö.

Om du utvecklar Python-kod som moduler eller bibliotek måste du installera och importera koden och sedan anropa metoder från en Python-fil som konfigurerats som källkod. Se Hantera Python-beroenden för Lakeflow deklarativa pipelines.

Anmärkning

Om du behöver använda godtyckliga SQL-kommandon i en Python-notebook-fil kan du använda syntaxmönstret spark.sql("<QUERY>") för att köra SQL som Python-kod.

Med Unity Catalog-funktioner kan du registrera godtyckliga Användardefinierade Python-funktioner för användning i SQL. Se Användardefinierade funktioner (UDF: er) i Unity Catalog.

Översikt över utvecklingsfunktioner för deklarativa pipelines i Lakeflow

Lakeflow deklarativa pipeline-verktyg bygger ut och utnyttjar många Azure Databricks-funktioner och inför nya funktioner och koncept. Följande tabell innehåller en kort översikt över begrepp och funktioner som stöder utveckling av pipelinekod:

Egenskap Description
Utvecklingsläge Om du kör pipelines interaktivt (genom att välja att uppdatera via Lakeflow Pipelines Editor) används utvecklingsläget. Nya pipelines konfigureras för att köras utan utvecklingsläge när de körs automatiskt via ett schema eller en automatiserad utlösare. Se Utvecklingsläge.
Torrkörning En torr körningsuppdatering verifierar korrektheten i pipelinens källkod utan att köra en uppdatering på några tabeller. Se Kontrollera om det finns fel i en pipeline utan att vänta på att tabeller ska uppdateras.
Lakeflow Pipelines-redigeraren Python- och SQL-filer som konfigurerats som källkod för Lakeflow Deklarativa Pipelines ger interaktiva alternativ för att validera kod och köra uppdateringar. Se Utveckla och felsöka ETL-pipelines med Lakeflow Pipelines Editor.
Parameterar Använd parametrar i källkods- och pipelinekonfigurationer för att förenkla testning och utökningsbarhet. Se Använd parametrar med Lakeflow Deklarativa Pipelines.
Databricks-resurspaket Med Databricks-tillgångspaket kan du flytta pipelinekonfigurationer och källkod mellan arbetsytor. Se även Konvertera deklarativa pipelines för Lakeflow till ett Databricks Asset Bundle-projekt.

Skapa exempeldatauppsättningar för utveckling och testning

Databricks rekommenderar att du skapar utvecklings- och testdatauppsättningar för att testa pipelinelogik med förväntade data och potentiellt felaktiga eller skadade poster. Det finns flera sätt att skapa datauppsättningar som kan vara användbara för utveckling och testning, inklusive följande:

  • Välj en delmängd av data från en produktionsdatauppsättning.
  • Använd anonymiserade eller artificiellt genererade data för källor som innehåller PII. För att se en självstudiekurs som använder faker-biblioteket för att generera data för testning, se Självstudie: Skapa en ETL-pipeline med ändringsdatainsamling med Lakeflow Deklarativa Pipelines.
  • Skapa testdata med väldefinierade resultat baserat på nedströmstransformeringslogik.
  • Genom att skapa poster som bryter mot dataschemats förväntningar kan du förutse potentiell datakorruption, felaktiga poster och ändringar av överliggande data.

Om du till exempel har en fil som definierar en datauppsättning med hjälp av följande kod:

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

Du kan skapa en exempeldatauppsättning som innehåller en delmängd av posterna med hjälp av en fråga som liknar följande:

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

I följande exempel visas filtrering av publicerade data för att skapa en delmängd av produktionsdata för utveckling eller testning:

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

Om du vill använda dessa olika datauppsättningar skapar du flera pipelines med källkoden som implementerar transformeringslogik. Varje pipeline kan läsa data från datamängden input_data men är konfigurerad för att inkludera filen som skapar den datauppsättning som är specifik för miljön.

Hur bearbetar datauppsättningarna i Lakeflow deklarativa pipelines data?

I följande tabell beskrivs hur materialiserade vyer, strömmande tabeller och vyer bearbetar data:

Datasettyp Hur bearbetas poster genom definierade frågor?
Direktuppspelningstabell Varje post bearbetas exakt en gång. Detta förutsätter en källa som endast tillåter tillägg.
Materialiserad vy Register behandlas efter behov för att returnera korrekta resultat för det aktuella dataläget. Materialiserade vyer bör användas för databearbetningsuppgifter som transformeringar, sammansättningar eller långsamma frågor före databehandling och ofta använda beräkningar. Resultaten cachelagras mellan uppdateringar.
View Poster bearbetas varje gång vyn konsulteras. Använd vyer för mellanliggande transformeringar och datakvalitetskontroller som inte ska publiceras till offentliga datauppsättningar.

Deklarera dina första datauppsättningar i Lakeflow Deklarativa Arbetsflöden

Lakeflow Declarative Pipelines introducerar ny syntax för Python och SQL. Mer information om grunderna i pipelinesyntax finns i Utveckla pipelinekod med Python och Utveckla pipelinekod med SQL.

Anmärkning

Lakeflow Deklarativa Pipelines separerar datauppsättningsdefinitioner från uppdateringsbehandling, och Lakeflow Deklarativa Pipelines–källan är inte avsedd för interaktiv körning.

Hur konfigurerar man deklarativa pipelines för Lakeflow?

Inställningarna för Lakeflows deklarativa pipelines delas in i två breda kategorier:

  1. Konfigurationer som definierar en samling filer (kallas källkod) som använder Lakeflow Deklarativa pipelines-syntax för att deklarera datauppsättningar.
  2. Konfigurationer som styr pipelineinfrastruktur, beroendehantering, hur uppdateringar bearbetas och hur tabeller sparas på arbetsytan.

De flesta konfigurationer är valfria, men vissa kräver noggrann uppmärksamhet, särskilt när du konfigurerar produktionspipelines. Dessa inkluderar följande:

  • För att göra data tillgängliga utanför pipelinen måste du deklarera ett målschema att publicera till Hive-metaarkivet eller en målkatalog och målschema att publicera till Unity Catalog.
  • Behörigheter för dataåtkomst konfigureras via det kluster som används för exekvering. Se till att klustret har rätt behörigheter konfigurerade för datakällor och för den angivna lagringsplatsen , om det specificerats.

Mer information om hur du använder Python och SQL för att skriva källkod för pipelines finns i Sql-språkreferens för Lakeflow Deklarativa pipelines och Språkreferens för Lakeflow Deklarativa pipelines i Python.

Mer information om pipelineinställningar och konfigurationer finns i Konfigurera Deklarativa pipelines för Lakeflow.

Distribuera din första pipeline och aktivera uppdateringar

Innan du bearbetar data med Deklarativa Lakeflow-pipelines måste du konfigurera en pipeline. När en pipeline har konfigurerats kan du utlösa en uppdatering för att beräkna resultat för varje datauppsättning i pipelinen. Information om hur du kommer igång med Deklarativa Lakeflow-pipelines finns i Självstudie: Skapa en ETL-pipeline med hjälp av ändringsdatainfångning med Deklarativa Lakeflow-pipelines.

Vad är en pipelineuppdatering?

Pipelines distribuerar infrastruktur och beräknar om datatillstånd när du startar en uppdatering. En uppdatering gör följande:

  • Startar ett kluster med rätt konfiguration.
  • Identifierar alla tabeller och vyer som definierats och söker efter eventuella analysfel, till exempel ogiltiga kolumnnamn, saknade beroenden och syntaxfel.
  • Skapar eller uppdaterar tabeller och vyer med de senaste tillgängliga data.

Pipelines kan köras kontinuerligt eller enligt ett schema beroende på ditt användningsfalls krav på kostnad och svarstid. Se Kör en uppdatering i Lakeflow Deklarativa Pipelines.

Importera data med Lakeflow deklarativa pipelines

Deklarativa pipelines för Lakeflow stöder alla datakällor som är tillgängliga i Azure Databricks.

Databricks rekommenderar att du använder strömningstabeller för de flesta inmatningsanvändningsfall. För filer som anländer till molnobjektlagring rekommenderar Databricks automatisk inläsning. Du kan mata in data direkt med Lakeflow deklarativa pipelines från de flesta meddelandebussar.

Mer information om hur du konfigurerar åtkomst till molnlagring finns i Konfiguration av molnlagring.

För format som inte stöds av Auto Loader kan du använda Python eller SQL för att köra frågor mot alla format som stöds av Apache Spark. Se Läsa in data med deklarativa Lakeflow-pipelines.

Övervaka och framtvinga datakvalitet

Du kan använda förväntningar för att ange datakvalitetskontroller för innehållet i en datamängd. Till skillnad från en CHECK begränsning i en traditionell databas som förhindrar att poster läggs till som inte uppfyller villkoret, ger förväntningarna flexibilitet när data bearbetas som inte uppfyller kraven på datakvalitet. Med den här flexibiliteten kan du bearbeta och lagra data som du förväntar dig är röriga och data som måste uppfylla strikta kvalitetskrav. Se avsnittet Hantera datakvalitet med pipeline-förväntningar.

Deklarativa pipelines för Lakeflow utökar funktionerna i Delta Lake. Eftersom tabeller som skapats och hanteras av Lakeflow Declarative Pipelines är Delta-tabeller har de samma garantier och funktioner som tillhandahålls av Delta Lake. Se Vad är Delta Lake i Azure Databricks?.

Lakeflow deklarativa pipelines lägger till ytterligare flera tabellegenskaper utöver de många tabellegenskaper som kan anges i Delta Lake. Se Referens för egenskaper hos Lakeflow deklarativa pipelines och Referens för egenskaper hos deltatabeller.

Hur tabeller skapas och hanteras av Lakeflow Deklarativa Pipelines

Azure Databricks hanterar automatiskt tabeller som skapats med Lakeflow Deklarativa pipelines, och bestämmer hur uppdateringar behöver bearbetas för att korrekt beräkna det aktuella tillståndet för en tabell och utföra ett antal underhålls- och optimeringsuppgifter.

För de flesta åtgärder bör du tillåta att Lakeflow deklarativa pipelines hanterar alla uppdateringar, infogningar och borttagningar i måltabellen. Mer information och begränsningar finns i Behåll manuella borttagningar eller uppdateringar.

Underhållsuppgifter utförda av Lakeflows deklarativa pipelines

Lakeflow Deklarativa pipelines utför underhållsaktiviteter på en optimal takt med hjälp av förutsägande optimering. Underhåll kan förbättra frågeprestanda och minska kostnaderna genom att ta bort gamla versioner av tabeller. Detta omfattar fullständiga åtgärder för OPTIMIZE och VACUUM. Underhållsaktiviteter utförs enligt ett schema som bestäms av förutsägelseoptimering och endast om en pipelineuppdatering har körts sedan det tidigare underhållet.

Information om hur ofta förutsägande optimering körs och för att förstå underhållskostnader finns i Tabellreferens för systemtabell för förutsägande optimering.

Begränsningar

För en lista över begränsningar, se Lakeflows begränsningar för deklarativa pipelines.

För en lista över krav och begränsningar som är specifika för användningen av Lakeflow deklarativa pipelines med Unity Catalog, se Använd Unity Catalog med dina Lakeflow deklarativa pipelines

Ytterligare resurser