DLT-pijplijnen ontwikkelen
Het ontwikkelen en testen van pijplijncode verschilt van andere Apache Spark-workloads. Dit artikel bevat een overzicht van ondersteunde functionaliteit, best practices en overwegingen bij het ontwikkelen van pijplijncode. Zie Het toepassen van aanbevolen procedures voor softwareontwikkeling & DevOps best practices voor DLT-pijplijnenvoor meer aanbevelingen en best practices.
Notitie
U moet broncode toevoegen aan een pijplijnconfiguratie om code te valideren of een update uit te voeren. Zie Een DLT-pijplijn configureren.
Welke bestanden zijn geldig voor de broncode van de pijplijn?
DLT-pijplijncode kan Python of SQL zijn. U kunt een combinatie van Python- en SQL-broncodebestanden met één pijplijn hebben, maar elk bestand kan slechts één taal bevatten. Zie Pijplijncode ontwikkelen met Python en Pijplijncode ontwikkelen met SQL.
U kunt notebooks en werkruimtebestanden gebruiken bij het opgeven van broncode voor een pijplijn. Werkruimtebestanden vertegenwoordigen Python- of SQL-scripts die zijn geschreven in uw favoriete IDE of de Databricks-bestandseditor. Zie Wat zijn werkruimtebestanden?.
Als u Python-code ontwikkelt als modules of bibliotheken, moet u de code installeren en importeren en vervolgens methoden aanroepen vanuit een Python-notebook- of werkruimtebestand dat is geconfigureerd als broncode. Zie Python-afhankelijkheden beheren voor DLT-pijplijnen.
Notitie
Als u willekeurige SQL-opdrachten in een Python-notebook wilt gebruiken, kunt u het syntaxispatroon spark.sql("<QUERY>")
gebruiken om SQL als Python-code uit te voeren.
Met Unity Catalog-functies kunt u willekeurige door de gebruiker gedefinieerde Python-functies registreren voor gebruik in SQL. Zie door de gebruiker gedefinieerde functies (UDF's) in Unity Catalog.
Overzicht van DLT-ontwikkelfuncties
DLT breidt uit en maakt gebruik van veel Azure Databricks-functies en introduceert nieuwe functies en concepten. De volgende tabel bevat een kort overzicht van concepten en functies die ondersteuning bieden voor het ontwikkelen van pijplijncode:
Eigenschap | Beschrijving |
---|---|
Ontwikkelingsmodus | Nieuwe pijplijnen zijn standaard geconfigureerd voor uitvoering in de ontwikkelingsmodus. Databricks raadt het gebruik van de ontwikkelingsmodus aan voor interactieve ontwikkeling en testen. Zie Ontwikkelings- en productiemodi. |
Valideren | Een Validate -update controleert de juistheid van de broncode van de pijplijn zonder een update uit te voeren voor tabellen. Zie Een pijplijn controleren op fouten zonder te wachten tot tabellenzijn bijgewerkt. |
Notitieboeken | Notebooks die zijn geconfigureerd als broncode voor een DLT-pijplijn, bieden interactieve opties voor het valideren van code en het uitvoeren van updates. Zie DLT-pijplijnen ontwikkelen en fouten opsporen in notebooks. |
Parameters | Gebruik parameters in broncode- en pijplijnconfiguraties om testen en uitbreidbaarheid te vereenvoudigen. Zie Gebruik parameters met DLT-pijplijnen. |
Databricks Asset Bundles | Met Databricks Asset Bundles kunt u pijplijnconfiguraties en broncode tussen werkruimten verplaatsen. Zie een DLT-pijplijn converteren naar een Databricks Asset Bundle-project. |
Voorbeeldgegevenssets maken voor ontwikkeling en testen
Databricks raadt aan om ontwikkelings- en testgegevenssets te maken om pijplijnlogica te testen met verwachte gegevens en mogelijk onjuiste of beschadigde records. Er zijn meerdere manieren om gegevenssets te maken die nuttig kunnen zijn voor ontwikkeling en testen, waaronder de volgende:
- Selecteer een subset met gegevens uit een productiegegevensset.
- Gebruik geanonimiseerde of kunstmatig gegenereerde gegevens voor bronnen met PII.
- Testgegevens maken met duidelijk gedefinieerde resultaten op basis van downstream-transformatielogica.
- Verwacht mogelijke beschadiging van gegevens, onjuiste records en wijzigingen in upstreamgegevens door records te maken die de verwachtingen van het gegevensschema verbreken.
Als u bijvoorbeeld een notebook hebt waarmee een gegevensset wordt gedefinieerd met behulp van de volgende code:
CREATE OR REFRESH STREAMING TABLE input_data
AS SELECT * FROM STREAM read_files(
"/production/data",
format => "json")
U kunt een voorbeeldgegevensset met specifieke records maken met behulp van een query zoals hieronder:
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
In het volgende voorbeeld ziet u hoe u gepubliceerde gegevens filtert om een subset van de productiegegevens te maken voor ontwikkeling of testen:
CREATE OR REFRESH MATERIALIZED VIEW input_data AS SELECT * FROM prod.input_data WHERE date > current_date() - INTERVAL 1 DAY
Als u deze verschillende gegevenssets wilt gebruiken, maakt u meerdere pijplijnen met de notebooks die de transformatielogica implementeren. Elke pijplijn kan gegevens lezen uit de input_data
gegevensset, maar is geconfigureerd om het notebook op te nemen waarmee de gegevensset wordt gemaakt die specifiek is voor de omgeving.