Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
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=trueuna delle opzioni seguenti:- A livello di ambiente, tutti i notebook e i processi che usano tale ambiente ereditano l'impostazione. Vedere Abilitare la regolazione automatica.
- Solo in una sessione di definizione lavoro Spark o in un notebook. Vedere Abilitare l'ottimizzazione automatica per una singola sessione.
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.
Funzionamento dell'autotune
Autotune utilizza un ciclo di ottimizzazione iterativo.
- Iniziare dai valori di configurazione di Spark predefiniti.
- Generare configurazioni candidate intorno a una linea di base (centroide).
- Prevedere il candidato migliore usando un modello addestrato su esperienze precedenti.
- Applicare la soluzione candidata ed eseguire la query.
- 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.
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].
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.