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.
Autotune regola automaticamente la configurazione di Apache Spark per velocizzare l'esecuzione dei carichi di lavoro e ottimizzare le prestazioni complessive. L'ottimizzazione automatica consente di risparmiare tempo e risorse rispetto all'ottimizzazione manuale, che richiede ampio impegno, risorse, tempo e sperimentazione. L'ottimizzazione automatica utilizza i dati di esecuzione storici dei carichi di lavoro per individuare e applicare, in modo iterativo, le configurazioni più efficaci per un carico di lavoro specifico.
Importante
Questa funzionalità si trova in Anteprima.
Nota
La funzionalità di ottimizzazione automatica delle query in Microsoft Fabric è attualmente in anteprima. L'ottimizzazione automatica è disponibile in tutte le aree di produzione, ma è disabilitata per impostazione predefinita. È possibile attivarla tramite l'impostazione di configurazione Spark all'interno dell'ambiente o all'interno di una singola sessione includendo la rispettiva impostazione Spark nel notebook Spark o nel codice di definizione del processo Spark.
Ottimizzazione delle query
L'Autotune configura tre impostazioni di Apache Spark per ciascuna delle tue query in modo separato.
-
spark.sql.shuffle.partitions
: imposta il numero di partizioni per il rimescolamento dei dati durante i join o le aggregazioni. Il valore predefinito è 200. -
spark.sql.autoBroadcastJoinThreshold
: imposta le dimensioni massime della tabella in byte trasmessa a tutti i nodi di lavoro quando viene eseguita l'operazione di unione. Il valore predefinito è 10 MB. -
spark.sql.files.maxPartitionBytes
: definisce il numero massimo di byte da comprimere in una singola partizione durante la lettura dei file. Funziona per origini basate su file Parquet, JSON e ORC. Il valore predefinito è 128 MB.
Suggerimento
L'ottimizzazione delle query di ottimizzazione automatica esamina le singole query e crea un modello ML distinto per ogni query. Mira in particolare a:
- Query ripetitiva
- Query di lunga durata (con più di 15 secondi di esecuzione)
- Query dell'API SQL di Apache Spark (escluse le query scritte nell'API RDD, che sono rare), ma tutte le query vengono ottimizzate indipendentemente dal linguaggio (Scala, PySpark, R, Spark SQL). Questa funzionalità è compatibile con notebook, definizioni di job Apache Spark e pipeline. I vantaggi variano in base alla complessità della query, ai metodi usati e alla struttura. Test approfonditi hanno dimostrato che i maggiori vantaggi sono realizzati con le query correlate all'analisi esplorativa dei dati, ad esempio la lettura dei dati, l'esecuzione di unioni, aggregazioni e ordinamento.
Intuizione basata sull'intelligenza artificiale dietro l'autotune
La funzionalità di autotuning utilizza un processo iterativo per ottimizzare le prestazioni delle query. Inizia con una configurazione predefinita e impiega un modello di Machine Learning per valutare l'efficacia. Quando un utente invia una query, il sistema recupera i modelli archiviati in base alle interazioni precedenti. Genera potenziali configurazioni relative a un'impostazione predefinita denominata centroid. Viene applicato il candidato migliore stimato dal modello. Dopo l'esecuzione della query, i dati sulle prestazioni vengono inviati nuovamente al sistema per perfezionare il modello.
Il ciclo di feedback sposta gradualmente il centroide verso le impostazioni ottimali. Ottimizza le prestazioni nel corso del tempo riducendo al minimo il rischio di regressione. Gli aggiornamenti continui basati sulle query utente consentono di affinare i benchmark delle prestazioni. Per di più, il processo aggiorna le configurazioni di centroid per garantire che il modello si sposti verso impostazioni più efficienti in modo incrementale. Ciò si ottiene valutando le prestazioni passate e utilizzandole per orientare le modifiche future. Fa uso di tutti i punti dati per attenuare l'impatto delle anomalie.
Dal punto di vista dell'IA responsabile, la funzionalità di ottimizzazione automatica include meccanismi di trasparenza progettati per tenerti informato sull'utilizzo dei tuoi dati e sui relativi vantaggi. La sicurezza e la privacy sono allineate agli standard di Microsoft. Il monitoraggio continuo mantiene le prestazioni e l'integrità del sistema dopo il lancio.
Abilitare l'ottimizzazione automatica
L'ottimizzazione automatica è disponibile in tutte le aree di produzione, ma è disabilitata per impostazione predefinita. È possibile attivarlo tramite l'impostazione di configurazione di Spark all'interno dell'ambiente. Per abilitare l'ottimizzazione automatica, creare un nuovo ambiente o, per l'ambiente esistente, impostare la proprietà Spark "spark.ms.autotune.enabled = true", come illustrato nello screenshot seguente. Questa impostazione viene quindi ereditata da tutti i notebook e i processi in esecuzione in tale ambiente, ottimizzandoli automaticamente.
L'ottimizzazione automatica include un meccanismo predefinito per il monitoraggio delle prestazioni e il rilevamento delle regressioni delle prestazioni. Ad esempio, se una query elabora una quantità insolitamente elevata di dati, l'ottimizzazione automatica viene disattivata automaticamente. Occorrono in genere da 20 a 25 iterazioni per imparare a identificare la configurazione ottimale.
Nota
L'ottimizzazione automatica è compatibile con Fabric Runtime 1.1 e Runtime 1.2. L'Autotune non funziona quando la modalità di concorrenza elevata oppure l'endpoint privato è abilitato. Tuttavia, l'ottimizzazione automatica si integra perfettamente con la scalabilità automatica, indipendentemente dalla configurazione.
È possibile abilitare l'ottimizzazione automatica all'interno di una singola sessione includendo la rispettiva impostazione Spark nel notebook Spark o nel codice di definizione del processo Spark.
%%sql
SET spark.ms.autotune.enabled=TRUE
È possibile controllare l'ottimizzazione automatica tramite le impostazioni di Spark per il rispettivo notebook Spark o il codice di definizione del processo Spark. Per disabilitare Autotune, eseguire i comandi seguenti come prima cella (notebook) o riga del codice (SJD).
%%sql
SET spark.ms.autotune.enabled=FALSE
Caso di studio
Quando si esegue una query Apache Spark, Autotune crea un modello ML personalizzato dedicato all'ottimizzazione dell'esecuzione della query. Analizza i modelli di query e le esigenze delle risorse. Si consideri una query iniziale che filtra un set di dati in base a un attributo specifico, ad esempio un Paese. Anche se in questo esempio viene usato il filtro geografico, il principio si applica universalmente a qualsiasi attributo o operazione all'interno della query:
%%pyspark
df.filter(df.country == "country-A")
Autotune apprende da questa query, ottimizzando le esecuzioni successive. Quando la query cambia, ad esempio, modificando il valore del filtro o applicando una trasformazione dei dati diversa, l'essenza strutturale della query rimane spesso coerente:
%%pyspark
df.filter(df.country == "country-B")
Nonostante le modifiche, l'autotuning identifica la struttura fondamentale della nuova query, applicando le ottimizzazioni precedentemente apprese. Questa funzionalità garantisce un'efficienza elevata prolungata senza la necessità della riconfigurazione manuale per ogni nuova iterazione di query.
Registri
Per ognuna delle tue query, l'autotuning determina le impostazioni ottimali per tre configurazioni di Spark. È possibile visualizzare le impostazioni suggerite consultando i log. Le configurazioni consigliate dall'ottimizzazione automatica si trovano nei log del driver, in particolare quelle voci che iniziano con [Autotune].
Puoi trovare vari tipi di voci nei registri. Di seguito sono riportate quelle principali:
Stato | Descrizione |
---|---|
Autotune Disabilitato | Saltato L'autotuning è disabilitato, impedendo il recupero dei dati di telemetria e l'ottimizzazione delle query. Abilitare l'ottimizzazione automatica per usare completamente le sue funzionalità rispettando al contempo la privacy dei clienti". |
OTTIMIZZAZIONE QUERY DISABILITATA | Saltato L'ottimizzazione automatica delle query è disabilitata. Abilitarla per perfezionare le impostazioni per le query Spark SQL. |
IL_MODELLO_DI_RICERCA_NON_CORRISPONDE | Saltato Il modello della query non corrisponde. Autotune è efficace per le query di sola lettura. |
DURATA_DELLA_QUERY_TROPPO_BREVE | Saltato La durata della query è troppo breve per l'ottimizzazione. La funzione di autotuning richiede query più lunghe per un tuning efficace. Le query devono essere eseguite per almeno 15 secondi. |
Ottimizzazione della query riuscita | Successo Ottimizzazione delle query completata. Impostazioni Spark ottimali applicate. |
Nota sulla trasparenza
In conformità allo standard di intelligenza artificiale responsabile, questa sezione mira a chiarire gli usi e la convalida della funzionalità di ottimizzazione automatica, promuovendo la trasparenza e consentendo un processo decisionale basato su informazioni aggiornate.
Scopo dell'autotune
Autotune è sviluppato per migliorare l'efficienza del carico di lavoro di Apache Spark, principalmente per i professionisti dei dati. Le sue funzioni chiave includono:
- Automazione dell'ottimizzazione della configurazione di Apache Spark per ridurre i tempi di esecuzione.
- Riduzione al minimo degli sforzi di ottimizzazione manuale.
- Utilizzo dei dati storici del carico di lavoro per perfezionare le configurazioni in modo iterativo.
Convalida dell'ottimizzazione automatica
Autotune viene sottoposto a test estesi per garantire l'efficacia e la sicurezza:
- Test rigorosi con carichi di lavoro Spark diversi per verificare l'efficacia dell'algoritmo di ottimizzazione.
- Benchmarking su metodi di ottimizzazione Spark standard per illustrare i vantaggi delle prestazioni.
- Studi di casi reali che mettono in luce il valore pratico di Autotune.
- Conformità a 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.