Apache Spark Advisor i Azure Synapse Analytics (förhandsversion)
Apache Spark-rådgivaren analyserar kommandon och kod som körs av Spark och visar råd i realtid för Notebook-körningar. Spark-rådgivaren har inbyggda mönster som hjälper användarna att undvika vanliga misstag, ge rekommendationer för kodoptimering, utföra felanalys och hitta rotorsaken till fel.
Inbyggda råd
Kan returnera inkonsekventa resultat när du använder "randomSplit"
Inkonsekventa eller felaktiga resultat kan returneras när du arbetar med resultatet av metoden "randomSplit". Använd Apache Spark-cachelagring (RDD) innan du använder metoden "randomSplit".
Metoden randomSplit() motsvarar att utföra sample() på dataramen flera gånger, där varje exempel refetching, partitionering och sortering av dataramen inom partitioner. Datafördelningen mellan partitioner och sorteringsordningen är viktig för både randomSplit() och sample(). Om antingen ändringar görs vid datareparering kan det finnas dubbletter eller saknade värden i delningar, och samma exempel som använder samma startvärde kan ge olika resultat.
Dessa inkonsekvenser kanske inte inträffar vid varje körning, men för att eliminera dem helt cachelagrar du dataramen, partitionerar om en eller flera kolumner eller tillämpar mängdfunktioner som groupBy.
Tabell-/vynamn används redan
Det finns redan en vy med samma namn som den skapade tabellen, eller så finns det redan en tabell med samma namn som den skapade vyn. När det här namnet används i frågor eller program returneras endast vyn oavsett vilken som skapades först. För att undvika konflikter byter du namn på antingen tabellen eller vyn.
Det går inte att identifiera ett tips
Den valda frågan innehåller ett tips som inte känns igen. Kontrollera att tipset är rättstavat.
spark.sql("SELECT /*+ unknownHint */ * FROM t1")
Det går inte att hitta angivna relationsnamn
Det går inte att hitta de relationer som anges i tipset. Kontrollera att relationerna är rättstavade och tillgängliga inom tipsets omfång.
spark.sql("SELECT /*+ BROADCAST(unknownTable) */ * FROM t1 INNER JOIN t2 ON t1.str = t2.str")
Ett tips i frågan förhindrar att ett annat tips tillämpas
Den valda frågan innehåller ett tips som förhindrar att ett annat tips tillämpas.
spark.sql("SELECT /*+ BROADCAST(t1), MERGE(t1, t2) */ * FROM t1 INNER JOIN t2 ON t1.str = t2.str")
Aktivera "spark.advise.divisionExprConvertRule.enable" för att minska avrundningsfelspridningen
Den här frågan innehåller uttrycket med typen Double. Vi rekommenderar att du aktiverar konfigurationen "spark.advise.divisionExprConvertRule.enable", vilket kan minska divisionsuttrycken och minska avrundningsfelspridningen.
"t.a/t.b/t.c" convert into "t.a/(t.b * t.c)"
Aktivera "spark.advise.nonEqJoinConvertRule.enable" för att förbättra frågeprestanda
Den här frågan innehåller tidskrävande koppling på grund av "Eller"-villkor i frågan. Vi rekommenderar att du aktiverar konfigurationen "spark.advise.nonEqJoinConvertRule.enable", vilket kan hjälpa dig att konvertera den koppling som utlöses av "Or"-villkoret till SMJ eller BHJ för att påskynda frågan.
Optimera deltatabellen med komprimering av små filer
Den här frågan finns i en deltatabell med många små filer. Om du vill förbättra prestandan för frågor kör du kommandot OPTIMIZE i deltatabellen. Mer information finns i den här artikeln.
Optimera Delta-tabellen med ZOrder
Den här frågan finns i en Delta-tabell och innehåller ett mycket selektivt filter. För att förbättra prestandan för frågor kör du kommandot OPTIMIZE ZORDER BY i deltatabellen. Mer information finns i den här artikeln.
Användarupplevelse
Apache Spark-rådgivaren visar råd, inklusive information, varningar och fel, i notebook-cellutdata i realtid.
Information
Varning
Fel
Nästa steg
Mer information om övervakning av Apache Spark-program finns i artikeln Övervaka Apache Spark-program med hjälp av Synapse Studio.
Mer information om hur du skapar en notebook-fil finns i Så här använder du Synapse-notebook-filer