Przekształcanie danych
Ten artykuł zawiera wprowadzenie i omówienie przekształcania danych za pomocą usługi Azure Databricks. Przekształcanie danych lub przygotowywanie danych jest kluczowym krokiem we wszystkich obciążeniach inżynierii danych, analizy i uczenia maszynowego.
Przykładowe wzorce i zalecenia w tym artykule koncentrują się na pracy z tabelami lakehouse, które są wspierane przez usługę Delta Lake. Ponieważ usługa Delta Lake zapewnia gwarancje ACID usługi Databricks Lakehouse, podczas pracy z danymi w innych formatach lub systemach danych można obserwować różne zachowania.
Usługa Databricks zaleca pozyskiwanie danych do magazynu lakehouse w stanie nieprzetworzonym lub niemal nieprzetworzonym, a następnie stosowanie przekształceń i wzbogacania jako oddzielnego kroku przetwarzania. Ten wzorzec jest znany jako architektura medalionu. Zobacz Co to jest architektura medallion lakehouse?.
Jeśli wiesz, że dane, które chcesz przekształcić, nie zostały jeszcze załadowane do magazynu lakehouse, zobacz Pozyskiwanie danych do usługi Databricks Lakehouse. Jeśli próbujesz znaleźć dane usługi Lakehouse w celu zapisania przekształceń, zobacz Odnajdywanie danych.
Wszystkie przekształcenia zaczynają się od zapisania zapytania wsadowego lub przesyłania strumieniowego względem źródła danych. Jeśli nie znasz wykonywania zapytań dotyczących danych, zobacz Query data (Wykonywanie zapytań o dane).
Po zapisaniu przekształconych danych w tabeli delty możesz użyć tej tabeli jako tabeli funkcji dla uczenia maszynowego. Zobacz Inżynieria funkcji i obsługa.
Uwaga
W tym miejscu omówiono przekształcenia w usłudze Azure Databricks. Usługa Azure Databricks obsługuje również połączenia z wieloma typowymi platformami przygotowywania danych. Zobacz Nawiązywanie połączenia z partnerami przygotowywania danych przy użyciu programu Partner Connect.
Przekształcenia platformy Spark a przekształcenia lakehouse
Ten artykuł koncentruje się na definiowaniu transformatów w odniesieniu do języka T w etl lub ELT. Model przetwarzania platformy Apache Spark używa również słowa przekształcenia w powiązany sposób. Krótko: na platformie Apache Spark wszystkie operacje są definiowane jako przekształcenia lub akcje.
- Przekształcenia: dodaj logikę przetwarzania do planu. Przykłady obejmują odczytywanie danych, sprzężeń, agregacji i rzutowanie typów.
- Akcje: wyzwalanie logiki przetwarzania w celu oceny i wyprowadzania wyniku. Przykłady obejmują zapisy, wyświetlanie lub wyświetlanie podglądu wyników, ręczne buforowanie lub pobieranie liczby wierszy.
Platforma Apache Spark używa leniwego modelu wykonywania , co oznacza, że żadna logika zdefiniowana przez kolekcję operacji nie jest oceniana do momentu wyzwolenia akcji. Ten model ma ważną konsekwencję podczas definiowania potoków przetwarzania danych: użyj tylko akcji, aby zapisać wyniki z powrotem do tabeli docelowej.
Ponieważ akcje reprezentują wąskie gardło przetwarzania w celu optymalizacji logiki, usługa Azure Databricks dodała wiele optymalizacji na tych już obecnych na platformie Apache Spark w celu zapewnienia optymalnego wykonywania logiki. Te optymalizacje uwzględniają wszystkie przekształcenia wyzwalane przez daną akcję jednocześnie i znalezienie optymalnego planu na podstawie fizycznego układu danych. Ręczne buforowanie danych lub zwracanie wyników podglądu w potokach produkcyjnych może przerwać te optymalizacje i prowadzić do znacznego wzrostu kosztów i opóźnień.
W związku z tym możemy zdefiniować przekształcenie typu lakehouse jako dowolną kolekcję operacji zastosowanych do jednej lub większej liczby tabel typu lakehouse, które powodują utworzenie nowej tabeli lakehouse. Należy pamiętać, że podczas gdy przekształcenia, takie jak sprzężenia i agregacje, są omawiane oddzielnie, można połączyć wiele z tych wzorców w jednym kroku przetwarzania i ufać optymalizatorom w usłudze Azure Databricks, aby znaleźć najbardziej wydajny plan.
Jakie są różnice między przetwarzaniem strumieniowym a przetwarzaniem wsadowym?
Podczas przesyłania strumieniowego i przetwarzania wsadowego większość tej samej składni w usłudze Azure Databricks każda ma własną semantyka specyficzną.
Przetwarzanie wsadowe umożliwia zdefiniowanie jawnych instrukcji przetwarzania stałej ilości statycznych, niezwiązanych danych jako pojedynczej operacji.
Przetwarzanie strumienia umożliwia zdefiniowanie zapytania względem niezwiązanego, stale rosnącego zestawu danych, a następnie przetwarzania danych w małych partiach przyrostowych.
Operacje wsadowe w usłudze Azure Databricks używają platformy Spark SQL lub ramek danych, podczas gdy przetwarzanie strumienia korzysta ze strukturyzowanego przesyłania strumieniowego.
Polecenia platformy Apache Spark wsadowe można odróżnić od przesyłania strumieniowego ze strukturą, patrząc na operacje odczytu i zapisu, jak pokazano w poniższej tabeli:
Apache Spark | Przesyłanie strumieniowe ze strukturą | |
---|---|---|
Przeczytaj | spark.read.load() |
spark.readStream.load() |
Zapis | spark.write.save() |
spark.writeStream.start() |
Zmaterializowane widoki są zwykle zgodne z gwarancjami przetwarzania wsadowego, chociaż tabele delta live są używane do obliczania wyników przyrostowo, gdy jest to możliwe. Wyniki zwracane przez zmaterializowany widok są zawsze równoważne ocenie wsadowej logiki, ale usługa Azure Databricks stara się przetwarzać te wyniki przyrostowo, gdy jest to możliwe.
Tabele przesyłania strumieniowego zawsze obliczają wyniki przyrostowo. Ponieważ wiele źródeł danych przesyłanych strumieniowo przechowuje rekordy tylko przez okres godzin lub dni, model przetwarzania używany przez tabele przesyłania strumieniowego zakłada, że każda partia rekordów ze źródła danych jest przetwarzana tylko raz.
Usługa Azure Databricks obsługuje zapisywanie zapytań przesyłanych strumieniowo przy użyciu języka SQL w następujących przypadkach użycia:
- Definiowanie tabel przesyłania strumieniowego w wykazie aparatu Unity przy użyciu usługi Databricks SQL.
- Definiowanie kodu źródłowego dla potoków tabel na żywo delty.
Uwaga
Tabele przesyłania strumieniowego można również zadeklarować w tabelach delta live przy użyciu kodu przesyłania strumieniowego ze strukturą języka Python.
Przekształcenia wsadowe
Przekształcenia wsadowe działają na dobrze zdefiniowanym zestawie zasobów danych w określonym punkcie w czasie. Przekształcenia wsadowe mogą być operacjami jednorazowymi, ale często są częścią zaplanowanych zadań lub potoków, które są uruchamiane regularnie, aby zapewnić aktualność systemów produkcyjnych.
Przekształcenia przyrostowe
Wzorce przyrostowe zwykle zakładają, że źródło danych jest tylko do dołączania i ma stabilny schemat. Poniższe artykuły zawierają szczegółowe informacje na temat niuansów przekształceń przyrostowych w tabelach, które doświadczają aktualizacji, usuwania lub zmian schematu:
- Interfejsy API ZASTOSUJ ZMIANY: upraszczanie przechwytywania danych zmian za pomocą tabel różnicowych na żywo
- Używanie zestawienia danych zmian usługi Delta Lake w usłudze Azure Databricks
- Aktualizowanie schematu tabeli usługi Delta Lake
- Funkcja delta table przesyła strumieniowo odczyty i zapisy
Przekształcenia w czasie rzeczywistym
Usługa Delta Lake zapewnia niemal w czasie rzeczywistym dostęp do dużych ilości danych dla wszystkich użytkowników i aplikacji, które wysyłają zapytania do usługi Lakehouse, ale ze względu na obciążenie związane z zapisywaniem plików i metadanych w magazynie obiektów w chmurze nie można uzyskać dostępu do wielu obciążeń, które zapisują się w ujściach usługi Delta Lake.
W przypadku aplikacji do przesyłania strumieniowego o bardzo małych opóźnieniach usługa Databricks zaleca wybór systemów źródłowych i ujścia przeznaczonych dla obciążeń w czasie rzeczywistym, takich jak Kafka. Usługi Azure Databricks można używać do wzbogacania danych, w tym agregacji, sprzężeń między strumieniami i łączenia danych przesyłanych strumieniowo z powoli zmieniającymi się danymi wymiarów przechowywanymi w usłudze Lakehouse.