Udostępnij za pośrednictwem


Natywny aparat wykonywania dla platformy Spark sieci szkieletowej

Natywny aparat wykonywania to przełomowe rozszerzenie wykonywania zadań platformy Apache Spark w usłudze Microsoft Fabric. Ten wektoryzowany aparat optymalizuje wydajność i wydajność zapytań platformy Spark, uruchamiając je bezpośrednio w infrastrukturze typu lakehouse. Bezproblemowa integracja aparatu oznacza, że nie wymaga modyfikacji kodu i unika blokady dostawcy. Obsługuje ona interfejsy API platformy Apache Spark i jest zgodna ze środowiskiem Uruchomieniowym 1.3 (Apache Spark 3.5) i współpracuje zarówno z formatami Parquet, jak i Delta. Niezależnie od lokalizacji danych w usłudze OneLake lub w przypadku uzyskiwania dostępu do danych za pomocą skrótów aparat wykonywania natywnego maksymalizuje wydajność i wydajność.

Aparat wykonywania natywnego znacznie podnosi wydajność zapytań przy jednoczesnym zminimalizowaniu kosztów operacyjnych. Zapewnia niezwykłą szybkość, osiągając maksymalnie cztery razy szybszą wydajność w porównaniu z tradycyjnym systemem operacyjnym (oprogramowaniem typu open source) Spark, zweryfikowanym przez test porównawczy TPC-DS 1 TB. Aparat jest biegły w zarządzaniu szeroką gamą scenariuszy przetwarzania danych, począwszy od rutynowego pozyskiwania danych, zadań wsadowych i zadań ETL (wyodrębnianie, przekształcanie, ładowanie) do złożonych analiz danych i dynamicznych zapytań interakcyjnych. Użytkownicy korzystają z przyspieszonego czasu przetwarzania, zwiększonej przepływności i zoptymalizowanego wykorzystania zasobów.

Aparat wykonywania natywnego opiera się na dwóch kluczowych składnikach systemu operacyjnego: Velox, bibliotece przyspieszania bazy danych C++ wprowadzonej przez meta i Apache Gluten (inkubacja) — warstwie środkowej odpowiedzialnej za odciążanie aparatów SQL opartych na maszynach JVM do aparatów natywnych wprowadzonych przez intel.

Uwaga

Aparat wykonywania natywnego jest obecnie w publicznej wersji zapoznawczej. Aby uzyskać więcej informacji, zobacz bieżące ograniczenia. Zachęcamy do włączenia natywnego aparatu wykonawczego dla obciążeń bez dodatkowych kosztów. Będziesz korzystać z szybszego wykonywania zadań bez płacenia więcej — efektywnie płacisz mniej za tę samą pracę.

Kiedy należy używać aparatu wykonywania natywnego

Aparat wykonywania natywnego oferuje rozwiązanie do uruchamiania zapytań w zestawach danych na dużą skalę; Optymalizuje wydajność przy użyciu natywnych możliwości bazowych źródeł danych i zminimalizowania obciążenia związanego zwykle z przenoszeniem i serializacji danych w tradycyjnych środowiskach Spark. Aparat obsługuje różne operatory i typy danych, w tym agregację skrótów zbiorczych, sprzężenia zagnieżdżonej pętli emisji (BNLJ) i dokładne formaty znacznika czasu. Jednak aby w pełni korzystać z możliwości silnika, należy wziąć pod uwagę jego optymalne przypadki użycia:

  • Aparat jest skuteczny podczas pracy z danymi w formatach Parquet i Delta, które mogą przetwarzać natywnie i wydajnie.
  • Zapytania obejmujące skomplikowane przekształcenia i agregacje znacznie korzystają z możliwości przetwarzania kolumnowego i wektoryzacji aparatu.
  • Zwiększenie wydajności jest najbardziej istotne w scenariuszach, w których zapytania nie wyzwalają mechanizmu rezerwowego, unikając nieobsługiwanych funkcji lub wyrażeń.
  • Aparat jest dobrze dopasowany do zapytań intensywnie korzystających z obliczeń, a nie prostych lub powiązanych we/wy.

Aby uzyskać informacje na temat operatorów i funkcji obsługiwanych przez aparat wykonywania natywnego, zobacz dokumentację platformy Apache Gluten.

Włączanie aparatu wykonywania natywnego

Aby korzystać z pełnych możliwości natywnego aparatu wykonawczego w fazie zapoznawczej, niezbędne są określone konfiguracje. Poniższe procedury pokazują, jak aktywować tę funkcję dla notesów, definicji zadań platformy Spark i całych środowisk.

Ważne

Natywny aparat wykonywania obsługuje najnowszą wersję środowiska uruchomieniowego ogólnie dostępnego, czyli Runtime 1.3 (Apache Spark 3.5, Delta Lake 3.2). Wraz z wydaniem natywnego aparatu wykonawczego w środowisku Uruchomieniowym 1.3 obsługa poprzedniej wersji — Środowisko uruchomieniowe 1.2 (Apache Spark 3.4, Delta Lake 2.4) — zostało przerwane. Zachęcamy wszystkich klientów do uaktualnienia do najnowszego środowiska uruchomieniowego 1.3. Należy pamiętać, że jeśli używasz natywnego aparatu wykonawczego w środowisku uruchomieniowym 1.2, przyspieszanie natywne wkrótce zostanie wyłączone.

Włącz na poziomie środowiska

Aby zapewnić jednolite zwiększenie wydajności, włącz natywny aparat wykonywania we wszystkich zadaniach i notesach skojarzonych ze środowiskiem:

  1. Przejdź do ustawień środowiska.

  2. Przejdź do obszaru Obliczenia platformy Spark.

  3. Przejdź do karty Przyspieszanie .

  4. Zaznacz pole wyboru z etykietą Włącz aparat wykonywania natywnego.

  5. Zapisz i opublikuj zmiany.

    Zrzut ekranu przedstawiający sposób włączania aparatu wykonywania natywnego wewnątrz elementu środowiska.

Po włączeniu na poziomie środowiska wszystkie kolejne zadania i notesy dziedziczą ustawienie. To dziedziczenie gwarantuje, że wszystkie nowe sesje lub zasoby utworzone w środowisku automatycznie korzystają z rozszerzonych możliwości wykonywania.

Ważne

Wcześniej aparat wykonywania natywnego był włączony za pomocą ustawień platformy Spark w ramach konfiguracji środowiska. Dzięki naszej najnowszej aktualizacji (w toku wdrażania) uprościliśmy ten proces, wprowadzając przycisk przełącznika na karcie Przyspieszanie ustawień środowiska. Ponownie włącz aparat wykonywania natywnego przy użyciu nowego przełącznika — aby kontynuować korzystanie z aparatu wykonywania natywnego, przejdź do karty Przyspieszanie w ustawieniach środowiska i włącz go za pomocą przycisku przełącznika. Nowe ustawienie przełącznika w interfejsie użytkownika ma teraz priorytet nad wszystkimi poprzednimi konfiguracjami właściwości platformy Spark. Jeśli wcześniej włączono aparat wykonywania natywnego za pomocą ustawień platformy Spark, będzie ono wyłączone do czasu ponownego włączenia za pomocą przełącznika interfejsu użytkownika.

Zgodnie z zasadami zamrożenia wdrożeń platformy Azure firmy Microsoft podczas świąt Święto Dziękczynne i Czarne piątki ponownie zaplanowaliśmy wdrożenie regionu Północno-środkowe stany USA (NCUS) do 6 grudnia i regionu Wschodnie stany USA do 9 grudnia. Doceniamy twoją wiedzę i cierpliwość w tym zajętym czasie.

Włączanie dla notesu lub definicji zadania platformy Spark

Aby włączyć aparat wykonywania natywnego dla pojedynczego notesu lub definicji zadania platformy Spark, należy uwzględnić niezbędne konfiguracje na początku skryptu wykonywania:

%%configure 
{ 
   "conf": {
       "spark.native.enabled": "true", 
   } 
} 

W przypadku notesów wstaw wymagane polecenia konfiguracji w pierwszej komórce. W przypadku definicji zadań platformy Spark uwzględnij konfiguracje w pierwszej linii definicji zadania platformy Spark. Aparat wykonywania natywnego jest zintegrowany z pulami na żywo, więc po włączeniu tej funkcji funkcja będzie obowiązywać natychmiast bez konieczności inicjowania nowej sesji.

Ważne

Przed rozpoczęciem sesji platformy Spark należy przeprowadzić konfigurację natywnego aparatu wykonawczego. Po rozpoczęciu spark.shuffle.manager sesji platformy Spark ustawienie stanie się niezmienne i nie można go zmienić. Upewnij się, że te konfiguracje są ustawione w %%configure bloku w notesach lub w konstruktorze sesji platformy Spark dla definicji zadań platformy Spark.

Kontrola na poziomie zapytania

Mechanizmy włączania aparatu wykonywania natywnego na poziomie dzierżawy, obszaru roboczego i środowiska, bezproblemowo zintegrowane z interfejsem użytkownika, są aktywnie opracowywane. W międzyczasie można wyłączyć natywny aparat wykonywania dla określonych zapytań, szczególnie jeśli obejmują operatory, które nie są obecnie obsługiwane (zobacz ograniczenia). Aby wyłączyć, ustaw wartość false dla określonej komórki zawierającej zapytanie, ustaw wartość spark.native.enabled na wartość false.

%%sql 
SET spark.native.enabled=FALSE; 

Zrzut ekranu przedstawiający sposób wyłączania natywnego aparatu wykonywania wewnątrz notesu.

Po wykonaniu zapytania, w którym aparat wykonywania natywnego jest wyłączony, należy ponownie włączyć go dla kolejnych komórek, ustawiając wartość spark.native.enabled na true. Ten krok jest niezbędny, ponieważ platforma Spark wykonuje sekwencyjnie komórki kodu.

%%sql 
SET spark.native.enabled=TRUE; 

Identyfikowanie operacji wykonywanych przez aparat

Istnieje kilka metod określania, czy operator w zadaniu platformy Apache Spark został przetworzony przy użyciu natywnego aparatu wykonywania.

Interfejs użytkownika platformy Spark i serwer historii platformy Spark

Uzyskaj dostęp do serwera historii platformy Spark lub interfejsu użytkownika platformy Spark, aby zlokalizować zapytanie, które należy sprawdzić. W planie zapytania wyświetlanym w interfejsie poszukaj nazw węzłów, które kończą się sufiksem Transformer, NativeFileScan lub VeloxColumnarToRowExec. Sufiks wskazuje, że aparat wykonywania natywnego wykonał operację. Na przykład węzły mogą być oznaczone jako RollUpHashAggregateTransformer, ProjectExecTransformer, BroadcastHashJoinExecTransformer, ShuffledHashJoinExecTransformer lub BroadcastNestedLoopJoinExecTransformer.

Zrzut ekranu przedstawiający sposób sprawdzania wizualizacji języka DAG kończącej się sufiksem Transformer.

Objaśnienie ramki danych

Alternatywnie możesz wykonać df.explain() polecenie w notesie, aby wyświetlić plan wykonania. W danych wyjściowych poszukaj tych samych sufiksów Transformer, NativeFileScan lub VeloxColumnarToRowExec . Ta metoda zapewnia szybki sposób potwierdzenia, czy określone operacje są obsługiwane przez natywny aparat wykonywania.

Zrzut ekranu przedstawiający sposób sprawdzania planu fizycznego dla zapytania i sprawdzenia, czy zapytanie zostało wykonane przez natywny aparat wykonywania.

Mechanizm rezerwowy

W niektórych przypadkach aparat wykonywania natywnego może nie być w stanie wykonać zapytania z powodów, takich jak nieobsługiwane funkcje. W takich przypadkach operacja wraca do tradycyjnego aparatu Spark. Ten automatyczny mechanizm rezerwowania gwarantuje, że przepływ pracy nie będzie przerywany.

Zrzut ekranu przedstawiający mechanizm powrotu.

Zrzut ekranu przedstawiający sposób sprawdzania dzienników skojarzonych z mechanizmem rezerwowania.

Monitorowanie zapytań i ramek danych wykonywanych przez aparat

Aby lepiej zrozumieć, jak aparat wykonywania natywnego jest stosowany do zapytań SQL i operacji ramki danych oraz przechodzenia do szczegółów poziomów etapów i operatorów, możesz zapoznać się z interfejsem użytkownika platformy Spark i serwerem historii platformy Spark, aby uzyskać bardziej szczegółowe informacje na temat wykonywania aparatu natywnego.

Karta Aparat wykonywania natywnego

Możesz przejść do nowej karty "Gluten SQL / DataFrame", aby wyświetlić informacje o kompilacji glutenu i szczegóły wykonywania zapytania. Tabela Query (Zapytania) zawiera szczegółowe informacje o liczbie węzłów uruchomionych w aucie natywnym i powracających do maszyny JVM dla każdego zapytania.

Zrzut ekranu przedstawiający kartę aparatu wykonywania natywnego.

Wykres wykonywania zapytań

Możesz również kliknąć opis zapytania dla wizualizacji planu wykonywania zapytań platformy Apache Spark. Wykres wykonywania zawiera natywne szczegóły wykonywania na różnych etapach i ich odpowiednich operacjach. Kolory tła odróżniają aparat wykonywania: zielony reprezentuje aparat wykonywania natywnego, a jasnoniebieski wskazuje, że operacja jest uruchomiona w domyślnym aucie JVM.

Zrzut ekranu przedstawiający wykres wykonywania zapytania.

Ograniczenia

Aparat wykonywania natywnego zwiększa wydajność zadań platformy Apache Spark, ale zwróć uwagę na bieżące ograniczenia.

  • Niektóre operacje specyficzne dla funkcji delta nie są obsługiwane (ale aktywnie nad nimi pracujemy), w tym operacje scalania, skanowania punktów kontrolnych i wektory usuwania.
  • Niektóre funkcje i wyrażenia platformy Spark nie są zgodne z natywnym aparatem wykonywania, takimi jak funkcje zdefiniowane przez użytkownika (UDF) i array_contains funkcja, a także przesyłanie strumieniowe ze strukturą platformy Spark. Użycie tych niezgodnych operacji lub funkcji w ramach zaimportowanej biblioteki spowoduje również powrót do aparatu Spark.
  • Skanowanie z rozwiązań magazynu korzystających z prywatnych punktów końcowych nie jest obsługiwane (ale obecnie aktywnie nad nim pracujemy).
  • Aparat nie obsługuje trybu ANSI, więc wyszukuje i po włączeniu trybu ANSI automatycznie wraca do platformy Spark waniliowej.

W przypadku korzystania z filtrów dat w zapytaniach należy upewnić się, że typy danych po obu stronach porównania są zgodne, aby uniknąć problemów z wydajnością. Niezgodne typy danych mogą nie zwiększać wykonywania zapytań i mogą wymagać jawnego rzutu. Zawsze upewnij się, że typy danych po lewej stronie (LHS) i prawej stronie (RHS) porównania są identyczne, ponieważ niezgodne typy nie zawsze będą automatycznie rzutowane. Jeśli niezgodność typu jest nieunikniona, użyj jawnego rzutowania, aby dopasować typy danych, takie jak CAST(order_date AS DATE) = '2024-05-20'. Zapytania z niezgodnymi typami danych, które wymagają rzutu, nie będą przyspieszane przez natywny aparat wykonywania, dlatego zapewnienie spójności typów ma kluczowe znaczenie dla utrzymania wydajności. Na przykład zamiast order_date = '2024-05-20' gdzie order_date jest DATETIME i ciąg jest DATE, jawnie rzutuje order_date , aby DATE zapewnić spójne typy danych i poprawić wydajność.