Sdílet prostřednictvím


Poradce pro Apache Spark ve službě Azure Synapse Analytics (Preview)

Poradce pro Apache Spark analyzuje příkazy a kód spuštěný sparkem a zobrazuje rady pro spuštění poznámkových bloků v reálném čase. Poradce pro Spark má předdefinované vzory, které uživatelům pomáhají vyhnout se běžným chybám, nabízet doporučení pro optimalizaci kódu, provádět analýzu chyb a vyhledávat původní příčinu selhání.

Integrované rady

Při použití funkce randomSplit může vrátit nekonzistentní výsledky.

Při práci s výsledky metody randomSplit se můžou vrátit nekonzistentní nebo nepřesné výsledky. Před použitím metody randomSplit použijte ukládání do mezipaměti Apache Sparku (RDD).

Metoda randomSplit() je ekvivalentem opakovaného provedení metody sample() v datovém rámci, kdy každý vzorek znovu načte, rozdělí a seřadí datový rámec v rámci oddílů. Rozdělení dat napříč oddíly a pořadí řazení je důležité pro randomSplit() i sample(). Pokud se při opětovném načtení dat změní, může docházet k duplicitám nebo chybět hodnoty napříč rozděleními a stejný vzorek, který používá stejné počáteční hodnoty, může vést k odlišným výsledkům.

K těmto nekonzistencí nemusí docházet při každém spuštění, ale pokud je chcete úplně eliminovat, uložíte datový rámec do mezipaměti, rozdělíte je do oddílů ve sloupcích nebo použijete agregační funkce, jako je například groupBy.

Název tabulky nebo zobrazení se už používá

Zobrazení se stejným názvem jako vytvořená tabulka již existuje nebo již existuje tabulka se stejným názvem jako vytvořené zobrazení. Pokud se tento název použije v dotazech nebo aplikacích, vrátí se jenom zobrazení bez ohledu na to, které z nich se vytvořilo jako první. Chcete-li předejít konfliktům, přejmenujte tabulku nebo zobrazení.

Nelze rozpoznat nápovědu

Vybraný dotaz obsahuje nápovědu, která se nerozpoznala. Ověřte, že je nápověda napsaná správně.

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

Nelze najít zadané názvy relací.

Nelze najít relace zadané v nápovědě. Ověřte, že jsou relace správně napsané a přístupné v rámci nápovědy.

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

Nápověda v dotazu brání použití jiné nápovědy.

Vybraný dotaz obsahuje nápovědu, která brání použití jiné nápovědy.

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

Povolením spark.advise.divisionExprConvertRule.enable omezte šíření chyb zaokrouhlení.

Tento dotaz obsahuje výraz typu Double. Doporučujeme povolit konfiguraci spark.advise.divisionExprConvertRule.enable, která může pomoct omezit výrazy dělení a omezit šíření chyb zaokrouhlování.

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

Povolením spark.advise.nonEqJoinConvertRule.enable zvyšte výkon dotazů.

Tento dotaz obsahuje časově náročné spojení kvůli podmínce "Or" v rámci dotazu. Doporučujeme povolit konfiguraci spark.advise.nonEqJoinConvertRule.enable, která může pomoct převést spojení aktivované podmínkou Or na SMJ nebo BHJ, aby se tento dotaz urychlil.

Optimalizace tabulky Delta pomocí komprimace malých souborů

Tento dotaz je v tabulce Delta s mnoha malými soubory. Pokud chcete zvýšit výkon dotazů, spusťte v tabulce Delta příkaz OPTIMIZE. Další podrobnosti najdete v tomto článku.

Optimalizace tabulky Delta pomocí ZOrder

Tento dotaz je v tabulce Delta a obsahuje vysoce selektivní filtr. Pokud chcete zvýšit výkon dotazů, spusťte v tabulce delta příkaz OPTIMIZE ZORDER BY. Další podrobnosti najdete v tomto článku.

Zkušenosti uživatele

Poradce pro Apache Spark zobrazuje doporučení, včetně informací, upozornění a chyb, ve výstupu buňky poznámkového bloku v reálném čase.

  • Informace

    Snímek obrazovky s informacemi o doporučení

  • Upozornění

    Snímek obrazovky s upozorněním na radu

  • Chyby

    Snímek obrazovky s chybou doporučení

Další kroky

Další informace o monitorování aplikací Apache Spark najdete v článku Monitorování aplikací Apache Spark pomocí Synapse Studio.

Další informace o vytvoření poznámkového bloku najdete v tématu Jak používat poznámkové bloky Synapse.