Notatka
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Photon to natywny dla Azure Databricks wektoryzowany silnik zapytań, który przyspiesza obciążenia SQL, wywołania interfejsu API DataFrame, procesy ETL i bezstanowe obciążenia przetwarzania strumieniowego. Photon przetwarza dane partiami kolumn, co zapewnia znaczący wzrost wydajności w porównaniu z tradycyjnym wykonywaniem opartym na wierszach. Aplikacja Photon jest również zgodna z interfejsami API platformy Apache Spark, dlatego działa z istniejącym kodem bez konieczności wprowadzania zmian.
Jak działa aplikacja Photon
W przypadku obsługiwanych operacji Photon zastępuje silnik wykonywania Spark SQL oparty na JVM natywnym środowiskiem wykonawczym C++. Optymalizator zapytań Apache Spark (Catalyst) nadal planuje zapytanie, ale na warstwie wykonawczej kontrolę przejmuje Photon, przetwarzając dane w partiach kolumnowych zamiast wiersz po wierszu. Gdy Photon napotka nieobsługiwaną operację podczas wykonywania zapytania, automatycznie przechodzi do środowiska wykonawczego Spark w dalszej części tej operacji.
Photon przetwarza dane w partiach po tysiące wierszy jednocześnie, umożliwiając nowoczesnym procesorom korzystanie z instrukcji SIMD, które przetwarzają wiele wartości w jednym cyklu procesora. Działając jako natywny kod C++ zamiast na maszynie JVM, Photon eliminuje przerwy związane z odśmiecaniem pamięci, opóźnienia związane z rozgrzewaniem JIT oraz narzut pamięci. Kolumnowe przetwarzanie wsadowe umożliwia sekwencyjne odczyty sprzyjające wykorzystaniu pamięci podręcznej, co maksymalizuje przepustowość pamięci i wydajność potokową CPU.
Architektura Photon poprawia wydajność na wiele sposobów:
- Przyspieszanie zapytań: Aplikacja Photon zapewnia maksymalnie 5-krotną lepszą cenę/wydajność obciążeń danych i analiz w porównaniu z innymi magazynami danych w chmurze mierzonymi według standardowych w branży testów porównawczych TPC-DS.
- Zoptymalizowane łączenia i tasowanie: zastępuje łączenia typu sort-merge wysokowydajnymi łączeniami haszującymi i wykorzystuje przeprojektowany kolumnowy mechanizm tasowania, aby zwiększyć przepustowość łączeń na dużą skalę.
-
Wydajność zapisu: Natywny moduł zapisujący Parquet w Photon przyspiesza zapisy do Delta Lake, Apache Iceberg i Parquet, w tym operacje
UPDATE,DELETE,MERGE INTO,INSERTiCREATE TABLE AS SELECT. Szerokie tabele z tysiącami kolumn widzą szczególnie znaczące ulepszenia. - Wydajność skanowania: implementuje wypychanie filtrów, oczyszczanie słownika i pomijanie grup wierszy w celu zmniejszenia odczytu danych z magazynu, nawet w przypadku obsługi wielu małych plików.
- Pamięć podręczna dysku i współbieżność: zapewnia szybszy powtarzany dostęp za pośrednictwem pamięci podręcznej dysku i zwiększa przepływność współbieżnych zapytań w interakcyjnych obciążeniach analizy biznesowej.
- Integracja z interfejsami API SQL i DataFrame: Obsługuje interfejsy API SQL i DataFrame w językach Python, R, Scala i Java bez konieczności wprowadzania zmian w kodzie.
Aplikacja Photon zapewnia największą korzyść w przypadku długotrwałych zapytań, które przetwarzają duże zestawy danych. Zapytania, które zwykle kończą się w czasie krótszym niż dwie sekundy, nie odnotowują istotnej poprawy, ponieważ czas wykonywania wynika głównie z narzutu związanego z planowaniem i harmonogramowaniem, a nie z przetwarzania danych.
Integracja z platformą Azure Databricks
Photon przyspiesza obciążenia na platformie Azure Databricks. Nie musisz zmieniać kodu ani zapytań, aby korzystać z aplikacji Photon.
- Analityka SQL i BI: Photon jest domyślnym silnikiem we wszystkich magazynach SQL, obsługując pulpity, zapytania ad hoc i zaplanowane raporty.
- ETL i inżynieria danych: Zadania wsadowe tworzone przy użyciu języka SQL lub interfejsu API DataFrame działają wydajniej podczas skanowania, łączenia, agregacji i zapisu danych. Natywny moduł zapisu Parquet szczególnie dobrze sprawdza się przy ładowaniu danych do tabel Delta Lake, Apache Iceberg lub Parquet.
- Lakeflow Spark Declarative Pipelines: Włączenie funkcji Photon w konfiguracji potoku pomaga przyspieszyć działanie Lakeflow Spark Declarative Pipelines.
- Przesyłanie strumieniowe: Aplikacja Photon obsługuje przesyłanie strumieniowe bezstanowe podczas zapisywania w ujściu delty lub Parquet. Obsługiwane źródła to Delta, Parquet, CSV, JSON, Kafka i Kinesis. Strumieniowanie stanowe nie jest obsługiwane.
- Sztuczna inteligencja i uczenie maszynowe: aplikacja Photon poprawia wydajność operacji Spark SQL, DataFrames, inżynierii cech i elementów GraphFrames.
Włączanie funkcji Photon
Photon jest zawsze włączony w środowiskach obliczeniowych bezserwerowych, magazynach SQL oraz bezserwerowych potokach deklaratywnych Lakeflow Spark.
W przypadku klasycznych zasobów obliczeniowych ogólnego przeznaczenia, zasobów obliczeniowych dla zadań oraz klasycznych potoków Lakeflow Spark Declarative Pipelines funkcja Photon jest domyślnie włączona, a podczas tworzenia lub edytowania zasobów obliczeniowych można ją włączyć lub wyłączyć za pomocą pola wyboru Użyj akceleracji Photon w sekcji Wydajność. Zobacz Korzystanie z akceleracji Photon. Jeśli te zasoby są tworzone przy użyciu interfejsu API klastrów lub interfejsu API zadań, musisz jawnie włączyć funkcję Photon, ustawiając wartość runtime_enginePHOTON. Jeśli używasz interfejsu Pipelines API, ustaw photon na true.
Funkcje wymagające włączenia aplikacji Photon
Następujące funkcje wymagają włączenia aplikacji Photon:
- Predykcyjne operacje wejścia/wyjścia dla odczytu i zapisu. Zobacz Co to jest predykcyjne I/O?
- Dynamiczne oczyszczanie plików w instrukcjach
MERGE,UPDATEiDELETE. Zobacz Dynamiczne oczyszczanie plików.
Obsługiwane typy wystąpień
Photon obsługuje wiele typów wystąpień na węzłach sterowników i węzłach obliczeniowych. Typy instancji Photon zużywają jednostki DBU w innym tempie niż instancje tego samego typu działające w środowisku innym niż Photon. Aby uzyskać więcej informacji na temat wystąpień Photon i użycia jednostek DBU, odwiedź stronę cennika Azure Databricks.
Obsługiwane operatory, wyrażenia i typy danych
Photon obejmuje następujące operatory, wyrażenia i typy danych. Gdy zapytanie obejmuje nieobsługiwaną operację, Photon automatycznie przełącza się na środowisko uruchomieniowe Spark dla tej części wykonywania zapytania.
Operatorzy
- Scan (Parquet, Delta, CSV, JSON), Filter, Project
- Haszowanie/Agregowanie/Łączenie/Tasowanie
- Nested-Loop Dołącz
- Null-Aware antyłączenie
- Złączenie przestrzenne (warianty rozgłaszane i tasowane obsługujące
ST_Intersects,ST_Contains,ST_Covers,ST_Equals,ST_Touches,ST_WithiniST_DWithin) - Połączenie, Rozszerzenie, PodzapytanieSkalarne
- Zlewnia zapisu Delta/Parquet
- Sort, TopK, Limit
- Funkcja okna
Wyrażenia
Te kategorie są reprezentatywne, a nie wyczerpujące. Poszczególne funkcje w każdej kategorii mogą mieć ograniczenia.
- Porównanie/logika
- Arytmetyka/matematyka
- Warunkowe (IF, CASE itp.)
- String
- Rzutowanie
- Agregacje, w tym Min/Max/MinBy/MaxBy dla typów zagnieżdżonych
- Data/Znacznik czasu/Format daty
Typy danych
- Bajt/Krótki/Całkowity/Długi
- logiczny
- Ciąg/plik binarny
- liczba dziesiętna
- Zmiennoprzecinkowy/podwójny
- Znacznik daty/godziny
- TimestampNTZ
- Struktura
- Tablica
- Mapa
- Variant
- Null
- Geometria
- Geografia
- Ciąg z uwzględnieniem sortowania
Monitorowanie użycia aplikacji Photon
Możesz monitorować liczbę przebiegów zapytania w aplikacji Photon przy użyciu następujących narzędzi:
- Interfejs użytkownika platformy Spark (klasyczne obliczenia wszystkich celów i zadań): na karcie SQL/DataFrame interfejsu użytkownika platformy Spark operatory Photon są wyświetlane w kolorze pomarańczowym w wizualizacji języka DAG zapytania. Standardowe operatory platformy Spark są wyświetlane na niebiesko. Pomaga to określić, które części zapytania korzystają z aplikacji Photon i które wracają do środowiska uruchomieniowego platformy Spark.
- Profil zapytania (magazyny SQL i obliczenia bezserwerowe): widok Szczegóły wykonywania pokazuje procent czasu zadania spędzonego w aplikacji Photon. Plan zapytania odróżnia operatory Photon (fioletowe) od standardowych operatorów (szarych).
Jeśli zauważysz, że zapytanie nie używa Photon zgodnie z oczekiwaniami, sprawdź, czy w zapytaniu używane są nieobsługiwane operacje, funkcje UDF lub formaty danych, które powodują powrót do środowiska uruchomieniowego Spark.
Ograniczenia
- Jeśli obciążenie natrafi na nieobsługiwaną operację, zasób obliczeniowy automatycznie przełączy się na środowisko uruchomieniowe Spark na pozostały czas trwania tej operacji. Zapytanie nadal generuje poprawne wyniki.
- Photon nie obsługuje funkcji UDF (funkcji definiowanych przez użytkownika), interfejsów API RDD ani interfejsów API zbiorów danych.
- Strumieniowanie stanowe nie jest obsługiwane. Aplikacja Photon obsługuje tylko bezstanowe przesyłanie strumieniowe.
- Photon nie przyspiesza zapytań, które zwykle wykonują się w mniej niż dwie sekundy.