Condividi tramite


Che cos'è l'ottimizzazione automatica per le configurazioni di Apache Spark in Fabric?

L'ottimizzazione automatica regola automaticamente le configurazioni di Apache Spark per ridurre il tempo di esecuzione del carico di lavoro e migliorare le prestazioni. Consente di evitare l'ottimizzazione manuale, che in genere richiede tentativi e errori ripetuti. Autotune utilizza dati cronologici di esecuzione dei carichi di lavoro per individuare e applicare iterativamente impostazioni efficaci per ciascun carico di lavoro.

Nota

L'ottimizzazione automatica delle query in Microsoft Fabric è attualmente in fase di anteprima. È disponibile in tutte le aree di produzione, ma è disabilitata per impostazione predefinita. Abilitalo in una configurazione Spark dell'ambiente, oppure per una singola sessione nel notebook o nel codice di definizione del lavoro Spark.

Impostazioni predefinite e requisiti di configurazione

  • Comportamento predefinito: l'ottimizzazione automatica è disattivata per impostazione predefinita.
  • Nessuna configurazione necessaria quando è disattivata: se non si abilita l'ottimizzazione automatica, Spark usa il comportamento di configurazione standard.
  • Installazione necessaria per l'uso della funzione di ottimizzazione automatica: impostare spark.ms.autotune.enabled=true una delle opzioni seguenti:

Ottimizzazione delle query

L'Autotune regola questi tre parametri di Apache Spark per ogni query:

  • spark.sql.shuffle.partitions: imposta il numero di partizioni per la riorganizzazione dei dati durante join o aggregazioni. Il valore predefinito è 200.
  • spark.sql.autoBroadcastJoinThreshold: imposta le dimensioni massime della tabella, in byte, da trasmettere ai nodi di lavoro durante un join. Il valore predefinito è 10 MB.
  • spark.sql.files.maxPartitionBytes: imposta il numero massimo di byte da comprimere in una partizione durante la lettura dei file. Si applica alle origini file Parquet, JSON e ORC. Il valore predefinito è 128 MB.

L'ottimizzazione automatica delle query esamina ogni query e crea un modello di apprendimento automatico separato per quella query. Funziona meglio per:

  • Query ripetitiva
  • Query lunghe (più di 15 secondi)
  • Query API SQL di Apache Spark (e non l'API RDD)

È possibile usare autotune con i notebook, le definizioni di lavori Spark e le pipeline. Il vantaggio varia in base alla complessità delle query e alla forma dei dati. Nei test, i vantaggi maggiori vengono visualizzati in modelli di analisi esplorativa dei dati, ad esempio letture, join, aggregazioni e ordinamenti.

Screenshot del tempo di esecuzione con autotune abilitato.

Funzionamento dell'autotune

Autotune utilizza un ciclo di ottimizzazione iterativo.

  1. Iniziare dai valori di configurazione di Spark predefiniti.
  2. Generare configurazioni candidate intorno a una linea di base (centroide).
  3. Prevedere il candidato migliore usando un modello addestrato su esperienze precedenti.
  4. Applicare la soluzione candidata ed eseguire la query.
  5. Restituisce i risultati dell'esecuzione nel modello.

Nel corso del tempo, la linea di base passa verso impostazioni migliori riducendo al contempo il rischio di regressione. L'uso di tutti i punti dati raccolti consente anche di ridurre l'effetto delle anomalie.

Abilitare l'ottimizzazione automatica

L'ottimizzazione automatica è disponibile in tutte le aree di produzione, ma è disabilitata per impostazione predefinita. Per abilitarla a livello di ambiente, impostare la proprietà spark.ms.autotune.enabled=true Spark in un ambiente nuovo o esistente. Tutti i notebook e i processi che usano tale ambiente ereditano l'impostazione.

Screenshot dell'abilitazione dell'autotuning.

L'ottimizzazione automatica include il rilevamento della regressione predefinito. Ad esempio, se una query elabora una quantità insolitamente elevata di dati, l'ottimizzazione automatica può ignorare automaticamente l'ottimizzazione per l'esecuzione. In molti scenari, l'ottimizzazione automatica richiede da circa 20 a 25 iterazioni per convergere su impostazioni avanzate.

Nota

Autotune è compatibile con Runtime 1.2. Non è possibile abilitarlo nelle versioni di runtime successive alla 1.2. Non viene eseguito quando è abilitata la modalità di concorrenza elevata o l'endpoint privato . L'ottimizzazione automatica funziona con la scalabilità automatica in qualsiasi configurazione di scalabilità automatica.

È anche possibile abilitare l'autotuning per una singola sessione impostando la proprietà Spark nel notebook o nella definizione del job Spark.

Abilitare l'ottimizzazione automatica per una singola sessione

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

Disabilitare l'ottimizzazione automatica per una singola sessione

Per disabilitare autotune in un notebook o nella definizione di lavoro Spark, eseguire uno dei comandi seguenti come prima cella o prima riga di codice.

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

Caso di studio

Quando si esegue una query Apache Spark, autotune crea un modello per la forma di quella query e apprende le impostazioni migliori nel tempo. Ad esempio, iniziare con questa query di filtro:

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

Autotune apprende da questa operazione. Se in un secondo momento si modifica solo il valore del filtro, la forma della query rimane simile:

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

Autotune può riutilizzare gli apprendimenti precedenti per questo schema di query simile, il che aiuta a mantenere le prestazioni senza ritocchi manuali.

Registri

Per ogni query, l'ottimizzazione automatica calcola i valori consigliati per le tre configurazioni Spark supportate. Per esaminare le raccomandazioni, controllare i log dei driver per le voci che iniziano con [Autotune].

Screenshot dei log di sintonizzazione automatica all'interno dell'hub di monitoraggio.

Gli stati comuni dei log includono:

Stato Descrizione
AUTOTUNE_DISABLED Saltato L'ottimizzazione automatica è disabilitata, quindi la raccolta e l'ottimizzazione dei dati di telemetria non vengono applicate.
QUERY_TUNING_DISABLED Saltato L'ottimizzazione delle query è disabilitata.
QUERY_PATTERN_NOT_MATCH Saltato Il modello di query non corrisponde ai tipi di query di sola lettura supportati.
QUERY_DURATION_TOO_SHORT Saltato La query è stata eseguita per meno di 15 secondi, un intervallo troppo breve per un affinamento efficace.
QUERY_TUNING_SUCCEED Successo La sintonizzazione delle query è stata completata e sono state applicate le impostazioni ottimizzate di Spark.

Nota sulla trasparenza

In linea con il Responsible AI Standard, questa sezione illustra come viene utilizzato e convalidato l'autotuning.

Scopo dell'autotune

Autotune è progettato per migliorare l'efficienza del carico di lavoro apache Spark per i professionisti dei dati. IT:

  • Ottimizza automaticamente le configurazioni di Apache Spark per ridurre il tempo di esecuzione.
  • Riduce il lavoro di ottimizzazione manuale.
  • Usa i dati cronologici del carico di lavoro per perfezionare in modo iterativo le scelte di configurazione.

Convalida dell'ottimizzazione automatica

L'Autotuning viene sottoposto a una convalida approfondita per garantire efficacia e sicurezza.

  • Usa test rigorosi in diversi carichi di lavoro Spark per verificare l'efficacia dell'algoritmo.
  • Benchmark rispetto ai metodi di ottimizzazione Spark standard per illustrare i vantaggi delle prestazioni.
  • Includono casi di studio reali per dimostrare il valore pratico.
  • Segue rigorosi standard di sicurezza e privacy per proteggere i dati degli utenti.

I dati utente vengono usati esclusivamente per migliorare le prestazioni del carico di lavoro, con protezioni affidabili per impedire l'uso improprio o l'esposizione di informazioni riservate.