Dela via


Vad innebär autotune för Apache Spark-konfigurationer i Fabric?

Autotune justerar automatiskt Apache Spark-konfigurationer för att minska utförandetiden och förbättra prestandan. Det hjälper dig att undvika manuell justering, vilket vanligtvis kräver upprepade försök och misstag. Autotune använder historiska körningsdata från dina arbetsbelastningar för att iterativt identifiera och tillämpa effektiva inställningar för varje arbetsbelastning.

Kommentar

Autotune-frågejustering i Microsoft Fabric är för närvarande i förhandsversion. Den är tillgänglig i alla produktionsregioner, men den är inaktiverad som standard. Aktivera denna i en miljö Spark-konfiguration, eller för en enda session i en notebook-fil eller kod för Spark-jobbdefinition.

Konfigurationsstandarder och krav

  • Standardbeteende: Autotune är inaktiverat som standard.
  • Ingen nödvändig konfiguration när du är avstängd: Om du inte aktiverar autotune använder Spark sitt standardkonfigurationsbeteende.
  • Obligatorisk installation för att använda autotune: Ange spark.ms.autotune.enabled=true antingen:

Frågeoptimering

Autotune justerar dessa tre Apache Spark-inställningar för varje fråga:

  • spark.sql.shuffle.partitions: Anger partitionsantalet för datablandning under kopplingar eller aggregeringar. Standard är 200.
  • spark.sql.autoBroadcastJoinThreshold: Anger den maximala tabellstorleken i byte som ska sändas till arbetsnoder under en koppling. Standard är 10 MB.
  • spark.sql.files.maxPartitionBytes: Anger maximalt antal byte som ska packas i en partition vid läsning av filer. Gäller för Parquet-, JSON- och ORC-filkällor. Standard är 128 MB.

Autotune-frågejustering undersöker varje fråga och skapar en separat maskininlärningsmodell för den frågan. Det fungerar bäst för:

  • Repetitiva frågor
  • Långvariga frågor (mer än 15 sekunder)
  • Apache Spark SQL API-frågor (inte RDD API)

Du kan använda autotune med notebook-filer, Spark-jobbdefinitioner och pipelines. Förmånen varierar beroende på frågekomplexitet och dataform. Vid testning visas de största vinsterna i undersökande dataanalysmönster, till exempel läsningar, kopplingar, aggregeringar och sorteringar.

Skärmbild av exekveringstid med autotune aktiverat.

Så här fungerar autotune

Autotune använder en iterativ optimeringsloop:

  1. Börja från standardvärdena för Spark-konfiguration.
  2. Generera kandidatkonfigurationer runt en baslinje (centroid).
  3. Förutsäga den bästa kandidaten med hjälp av en modell som tränats på tidigare körningar.
  4. Använd kandidaten och utför frågan.
  5. Mata tillbaka körningsresultaten i modellen.

Med tiden skiftar baslinjen mot bättre inställningar samtidigt som regressionsrisken minskas. Att använda alla insamlade datapunkter bidrar också till att minska effekten av avvikelser.

Aktivera autotune

Autotune är tillgängligt i alla produktionsregioner, men det är inaktiverat som standard. Om du vill aktivera den på miljönivå anger du egenskapen spark.ms.autotune.enabled=true Spark i en ny eller befintlig miljö. Inställningen ärvs av alla anteckningsböcker och jobb som använder denna miljö.

Skärmbild av aktivering av autotune.

Autotune innehåller inbyggd regressionsidentifiering. Om en sökfråga till exempel bearbetar en ovanligt stor mängd data kan autotune automatiskt hoppa över optimeringen för den körningen. I många scenarier behöver autotune cirka 20 till 25 iterationer för att konvergera på starka inställningar.

Kommentar

Autotune är kompatibelt med Runtime 1.2. Du kan inte aktivera den i körningsversioner senare än 1.2. Den körs inte när hög samtidighetsläge eller privat slutpunkt är aktiverad. Autotune fungerar med autoskalning i valfri konfiguration av automatisk skalning.

Du kan också aktivera autotune för en enskild session genom att ange egenskapen Spark i notebook-filen eller Spark-jobbdefinitionen.

Aktivera autotune för en enskild session

%%sql
SET spark.ms.autotune.enabled=TRUE

Inaktivera autotune för en enskild session

Om du vill inaktivera autotune i en notebook- eller Spark-jobbdefinition kör du något av följande kommandon som den första cellen eller den första kodraden.

%%sql 
SET spark.ms.autotune.enabled=FALSE 

Fallstudie

När du kör en Apache Spark-fråga skapar autotune en modell för frågeformen och lär sig de bästa inställningarna över tid. Börja till exempel med den här filterfrågan:

%%pyspark
df.filter(df.country == "country-A")

Autotune lär sig av den här körningen. Om du senare bara ändrar filtervärdet förblir frågeformen liknande:

%%pyspark
df.filter(df.country == "country-B")

Autotune kan återanvända tidigare lärdomar för det här liknande sökfrågemönstret, vilket bidrar till att upprätthålla prestandan utan manuell justering.

Loggar

För varje fråga beräknar autotune rekommenderade värden för de tre Spark-konfigurationer som stöds. För att granska rekommendationer, kontrollera drivrutinsloggfilerna efter poster som börjar med [Autotune].

Skärmbild av autotune-loggar i Övervakningshubben.

Vanliga loggstatusar är:

Läge beskrivning
AUTOTUNE_DISABLED Hoppade över Autotune är inaktiverat, så insamling och optimering av telemetri tillämpas inte.
QUERY_TUNING_DISABLED Hoppade över Optimering av sökfrågor har inaktiverats.
QUERY_PATTERN_NOT_MATCH Hoppade över Frågemönstret matchar inte de stödda endast läsbara frågetyperna.
QUERY_DURATION_TOO_SHORT Hoppade över Förfrågan kördes i mindre än 15 sekunder, vilket är för kort för effektiv optimering.
QUERY_TUNING_SUCCEED Framgång. Frågejusteringen har slutförts och optimerade Spark-inställningar har tillämpats.

Transparensanteckning

I enlighet med Responsible AI Standard förklarar det här avsnittet hur autotune används och verifieras.

Syftet med autotune

Autotune är utformat för att förbättra Apache Spark-arbetsbelastningens effektivitet för dataproffs. Det:

  • Justerar Apache Spark-konfigurationer automatiskt för att minska körningstiden.
  • Minskar insatsen för manuell justering.
  • Använder historiska arbetsbelastningsdata för att iterativt förfina konfigurationsalternativ.

Validering av autotune

Autotune genomgår omfattande validering för att säkerställa effektivitet och säkerhet:

  • Använder rigorösa tester för olika Spark-arbetsbelastningar för att verifiera justeringsalgoritmens effektivitet.
  • Prestandamått mot standardmetoder för Spark-optimering för att demonstrera prestandafördelar.
  • Innehåller verkliga fallstudier för att visa praktiskt värde.
  • Följer strikta säkerhets- och sekretessstandarder för att skydda användardata.

Användardata används uteslutande för att förbättra arbetsbelastningens prestanda, med robusta skydd för att förhindra missbruk eller exponering av känslig information.