Tworzenie potoków DLT
Opracowywanie i testowanie kodu potoków różni się od obciążeń Apache Spark. Ten artykuł zawiera omówienie obsługiwanej funkcjonalności, najlepszych praktyk i zagadnień dotyczących tworzenia kodu potoku. Aby uzyskać więcej zaleceń i najlepszych praktyk, zobacz Stosowanie najlepszych praktyk tworzenia oprogramowania & najlepszych praktyk DevOps do potoków DLT.
Notatka
Aby zweryfikować kod lub uruchomić aktualizację, należy dodać kod źródłowy do konfiguracji potoku. Zobacz Konfigurowanie potoku DLT.
Jakie pliki są prawidłowe dla kodu źródłowego potoku?
Kod potoku DLT może być napisany w języku Python lub SQL. Możesz mieć mieszankę plików kodu źródłowego w językach Python i SQL wspierających pojedynczy potok, ale każdy plik może zawierać tylko jeden język. Zobacz Tworzenie kodu potoku przy użyciu języka Python i Tworzenie kodu potoku przy użyciu języka SQL.
Podczas określania kodu źródłowego dla potoku można użyć notatników i plików obszaru roboczego. Pliki obszaru roboczego reprezentują skrypty języka Python lub SQL utworzone w preferowanym środowisku IDE lub edytorze plików usługi Databricks. Zobacz Co to są pliki obszaru roboczego?.
Jeśli tworzysz kod języka Python jako moduły lub biblioteki, musisz zainstalować i zaimportować kod, a następnie wywołać metody z notesu języka Python lub pliku obszaru roboczego skonfigurowanego jako kod źródłowy. Zobacz Manage Python dependencies for DLT pipelines (Zarządzanie zależnościami języka Python dla potoków DLT).
Notatka
Jeśli musisz użyć dowolnych poleceń SQL w notesie języka Python, możesz użyć wzorca składni spark.sql("<QUERY>")
do uruchamiania kodu SQL jako kodu w języku Python.
Funkcje katalogu Unity umożliwiają rejestrowanie dowolnych funkcji zdefiniowanych przez użytkownika w języku Python do użycia w SQL. Zobacz funkcje zdefiniowane przez użytkownika (UDF) w katalogu Unity.
Omówienie funkcji programowania DLT
Biblioteka DLT rozszerza i wykorzystuje wiele funkcji usługi Azure Databricks oraz wprowadza nowe funkcje i pojęcia. Poniższa tabela zawiera krótkie omówienie pojęć i funkcji, które obsługują tworzenie kodu potoku:
Cecha | Opis |
---|---|
Tryb programowania | Nowe potoki są domyślnie skonfigurowane do działania w trybie deweloperskim. Usługa Databricks zaleca korzystanie z trybu programowania interaktywnego i testowania. Zobacz Tryby programowania i produkcji. |
Walidować | Aktualizacja Validate weryfikuje poprawność kodu źródłowego potoku bez przeprowadzania aktualizacji na żadnych tabelach. Zobacz Sprawdź potok pod kątem błędów bez czekania na aktualizację tabel. |
Notebooki | Notatniki skonfigurowane jako źródło kodu dla potoku DLT udostępniają interaktywne opcje sprawdzania poprawności kodu i uruchamiania aktualizacji. Zobacz Tworzenie i debugowanie potoków DLT w notesach. |
Parametry | Wykorzystaj parametry w konfiguracji kodu źródłowego oraz w konfiguracji potoku, aby ułatwić testowanie i zwiększyć rozszerzalność. Zobacz Use parameters with DLT pipelines (Używanie parametrów z potokami DLT). |
Pakiety zasobów usługi Databricks | Pakiety zasobów Databricks umożliwiają przenoszenie konfiguracji potoku i kodu źródłowego między obszarami roboczymi. Zobacz , jak przekonwertować potok DLT na projekt pakietu zasobów Databricks. |
Tworzenie przykładowych zestawów danych na potrzeby programowania i testowania
Usługa Databricks zaleca tworzenie zestawów danych do celów deweloperskich i testowych, aby testować logikę potoków z oczekiwanymi danymi i rekordami potencjalnie nieprawidłowymi lub uszkodzonymi. Istnieje wiele sposobów tworzenia zestawów danych, które mogą być przydatne do programowania i testowania, w tym:
- Wybierz podzbiór danych z produkcyjnego zestawu danych.
- Użyj anonimowych lub sztucznie wygenerowanych danych dla źródeł zawierających dane osobowe.
- Tworzenie danych testowych z dobrze zdefiniowanymi wynikami na podstawie logiki transformacji podrzędnej.
- Przewidywanie potencjalnych uszkodzeń danych, nieprawidłowo sformułowanych rekordów i zmian danych nadrzędnych przez utworzenie rekordów, które przerywają oczekiwania schematu danych.
Jeśli na przykład masz notes, który definiuje zestaw danych przy użyciu następującego kodu:
CREATE OR REFRESH STREAMING TABLE input_data
AS SELECT * FROM STREAM read_files(
"/production/data",
format => "json")
Możesz utworzyć przykładowy zestaw danych zawierający określone rekordy przy użyciu zapytania, takiego jak następujące:
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
W poniższym przykładzie pokazano filtrowanie opublikowanych danych w celu utworzenia podzestawu danych produkcyjnych na potrzeby programowania lub testowania:
CREATE OR REFRESH MATERIALIZED VIEW input_data AS SELECT * FROM prod.input_data WHERE date > current_date() - INTERVAL 1 DAY
Aby użyć tych różnych zestawów danych, utwórz wiele potoków za pomocą notebooków implementujących logikę przekształcania. Każdy pipeline może odczytywać dane z zestawu danych input_data
, ale jest skonfigurowany tak, aby uwzględniać notebook, który tworzy zestaw danych specyficzny dla środowiska.