Udostępnij za pośrednictwem


Apache Spark Advisor w usłudze Azure Synapse Analytics (wersja zapoznawcza)

Doradca platformy Apache Spark analizuje polecenia i kod uruchamiany przez platformę Spark i wyświetla porady w czasie rzeczywistym dotyczące przebiegów notesu. Doradca Spark ma wbudowane wzorce ułatwiające użytkownikom unikanie typowych błędów, oferowanie zaleceń dotyczących optymalizacji kodu, przeprowadzanie analizy błędów i lokalizowanie głównej przyczyny awarii.

Wbudowane porady

Może zwracać niespójne wyniki podczas używania polecenia "randomSplit"

Niespójne lub niedokładne wyniki mogą być zwracane podczas pracy z wynikami metody "randomSplit". Przed użyciem metody "randomSplit" użyj buforowania platformy Apache Spark (RDD).

Metoda randomSplit() jest równoważna wykonywaniu próbki() w ramce danych wiele razy, przy użyciu każdego przykładu ponownego pobierania, partycjonowania i sortowania ramki danych w partycjach. Rozkład danych między partycjami i kolejność sortowania jest ważny zarówno dla randomSplit() i sample(). W przypadku zmiany po ponownym pobraniu danych mogą występować duplikaty lub brakujące wartości w podziałach, a ta sama próbka przy użyciu tego samego nasion może wygenerować różne wyniki.

Te niespójności mogą nie wystąpić w każdym uruchomieniu, ale aby całkowicie je wyeliminować, buforować ramkę danych, ponownie partycjonować kolumny lub stosować funkcje agregujące, takie jak groupBy.

Nazwa tabeli/widoku jest już używana

Widok już istnieje o tej samej nazwie co utworzona tabela lub tabela już istnieje o tej samej nazwie co utworzony widok. Gdy ta nazwa jest używana w zapytaniach lub aplikacjach, tylko widok zostanie zwrócony bez względu na to, który został utworzony jako pierwszy. Aby uniknąć konfliktów, zmień nazwę tabeli lub widoku.

Nie można rozpoznać wskazówki

Wybrane zapytanie zawiera wskazówkę, która nie jest rozpoznawana. Sprawdź, czy wskazówka jest poprawnie wpisana.

spark.sql("SELECT /*+ unknownHint */ * FROM t1")

Nie można odnaleźć określonych nazw relacji

Nie można odnaleźć relacji określonych w wskazówce. Sprawdź, czy relacje są poprawnie napisane i dostępne w zakresie wskazówki.

spark.sql("SELECT /*+ BROADCAST(unknownTable) */ * FROM t1 INNER JOIN t2 ON t1.str = t2.str")

Wskazówka w zapytaniu uniemożliwia zastosowanie innej wskazówki

Wybrane zapytanie zawiera wskazówkę, która uniemożliwia zastosowanie innej wskazówki.

spark.sql("SELECT /*+ BROADCAST(t1), MERGE(t1, t2) */ * FROM t1 INNER JOIN t2 ON t1.str = t2.str")

Włącz funkcję "spark.advise.divisionExprConvertRule.enable", aby zmniejszyć propagację błędów zaokrąglania

To zapytanie zawiera wyrażenie o podwójnym typie. Zalecamy włączenie konfiguracji "spark.advise.divisionExprConvertRule.enable", co może pomóc zmniejszyć liczbę wyrażeń dzielenia i zmniejszyć propagację błędów zaokrąglania.

"t.a/t.b/t.c" convert into "t.a/(t.b * t.c)"

Włącz opcję "spark.advise.nonEqJoinConvertRule.enable", aby zwiększyć wydajność zapytań

To zapytanie zawiera czasochłonne sprzężenie z powodu warunku "Or" w zapytaniu. Zalecamy włączenie konfiguracji "spark.advise.nonEqJoinConvertRule.enable", co może pomóc przekonwertować sprzężenie wyzwalane przez warunek "Or" na SMJ lub BHJ w celu przyspieszenia tego zapytania.

Optymalizowanie tabeli różnicowej przy użyciu małych plików kompaktowania

To zapytanie znajduje się w tabeli różnicowej z wieloma małymi plikami. Aby zwiększyć wydajność zapytań, uruchom polecenie OPTIMIZE w tabeli różnicowej. Więcej szczegółów można znaleźć w tym artykule.

Optymalizowanie tabeli delty przy użyciu elementu ZOrder

To zapytanie znajduje się w tabeli delty i zawiera wysoce selektywny filtr. Aby zwiększyć wydajność zapytań, uruchom polecenie OPTIMIZE ZORDER BY w tabeli różnicowej. Więcej szczegółów można znaleźć w tym artykule.

Doświadczenie użytkownika

Doradca platformy Apache Spark wyświetla porady, w tym informacje, ostrzeżenia i błędy w danych wyjściowych komórki notesu w czasie rzeczywistym.

  • Info

    Zrzut ekranu przedstawiający informacje o poradach.

  • Ostrzeżenie

    Zrzut ekranu przedstawiający ostrzeżenie dotyczące porad.

  • błędy

    Zrzut ekranu przedstawiający błąd porady.

Następne kroki

Aby uzyskać więcej informacji na temat monitorowania aplikacji platformy Apache Spark, zobacz artykuł Monitorowanie aplikacji platformy Apache Spark przy użyciu Synapse Studio.

Aby uzyskać więcej informacji na temat tworzenia notesu, zobacz How to use Synapse notebooks (Jak używać notesów usługi Synapse)