Małe mieszanie scalania w usłudze Azure Databricks
Notatka
Scalanie niskiej zmienności jest ogólnie dostępne (GA) w środowisku Databricks Runtime 10.4 LTS i nowszym oraz jako Public Preview w środowisku Databricks Runtime 9.1 LTS. Usługa Databricks zaleca klientom wersji zapoznawczej migrację do środowiska Databricks Runtime 10.4 LTS lub nowszego.
Polecenie MERGE służy do jednoczesnego aktualizowania, wstawiania i usuwania z tabeli usługi Delta Lake. Usługa Azure Databricks ma zoptymalizowaną implementację MERGE
, która znacznie poprawia wydajność typowych obciążeń, zmniejszając liczbę operacji mieszania.
Scalanie z niskiemu przemieszczaniu w Databricks zapewnia lepszą wydajność dzięki przetwarzaniu niezmodyfikowanych wierszy w osobnym, lepszym trybie przetwarzania, zamiast przetwarzania ich razem ze zmodyfikowanymi wierszami. W związku z tym ilość przetasowanych danych jest znacznie zmniejszona, co prowadzi do poprawy wydajności. Po wykonaniu operacji OPTIMIZE, niska częstotliwość łączenia wymagań zmniejsza także potrzebę ponownego uruchomienia polecenia ORDER BY przez użytkowników.
Zoptymalizowana wydajność
Wiele obciążeń MERGE
aktualizuje tylko stosunkowo małą liczbę wierszy w danej tabeli. Jednak tabele delty można aktualizować tylko dla poszczególnych plików. Gdy polecenie MERGE
musi zaktualizować lub usunąć niewielką liczbę wierszy przechowywanych w określonym pliku, należy również przetworzyć i ponownie zapisać wszystkie pozostałe wiersze przechowywane w tym samym pliku, mimo że te wiersze są niezmodyfikowane. Scalanie z małą ilością mieszania optymalizuje przetwarzanie niezmodyfikowanych wierszy. Wcześniej były przetwarzane w taki sam sposób, jak zmodyfikowane wiersze, przekazując je przez wiele etapów mieszania i kosztownych obliczeń. W przypadku scalania przy niskim mieszaniu niezmodyfikowane wiersze są przetwarzane bez mieszania, kosztownego przetwarzania ani dodatkowego obciążenia.
Zoptymalizowany układ danych
Oprócz szybszego uruchamiania, niskie mieszania scalania również przynosi korzyści wynikające z kolejnych operacji. Wcześniejsza implementacja MERGE
spowodowała całkowite zmianę układu danych niezmodyfikowanych danych, co spowodowało obniżenie wydajności kolejnych operacji. Scalanie o niskim przetasowaniach próbuje zachować istniejący układ danych niezmodyfikowanych rekordów, w tym optymalizacji kolejności Z na zasadzie najlepszego wysiłku. W związku z tym, przy niskiej intensywności scalania, wydajność operacji na tabeli Delta będzie pogarszać się wolniej po uruchomieniu jednego lub więcej poleceń MERGE
.
Notatka
Scalanie z niewielkim przetasowywaniem próbuje zachować układ danych na danych, które nie były modyfikowane. Układ danych zaktualizowanych lub nowo wstawionych może nie być optymalny, dlatego nadal może być konieczne uruchomienie poleceń OPTIMIZE
lub OPTIMIZE zORDER BY.
Dostępność
Domyślnie w środowisku Databricks Runtime 10.4 lub nowszym, jest włączone scalanie z niskim mieszaniem. We wcześniejszych obsługiwanych wersjach środowiska Databricks Runtime można ją włączyć, ustawiając konfigurację spark.databricks.delta.merge.enableLowShuffle
na true
. Ta flaga nie ma wpływu na środowisko Databricks Runtime 10.4 i nowsze.