Condividi tramite


Cache intelligente in Azure Synapse Analytics

La Cache intelligente funziona perfettamente in background e memorizza nella cache i dati per velocizzare l'esecuzione di Spark durante la lettura dal data lake ADLS Gen2. Rileva automaticamente anche le modifiche apportate ai file sottostanti e aggiorna automaticamente i file nella cache, fornendo i dati più recenti e quando la dimensione della cache raggiunge il limite, la cache rilascia automaticamente i dati meno letti per creare spazio per i dati più recenti. Questa funzionalità riduce il costo totale di proprietà migliorando le prestazioni fino a 65% nelle letture successive dei file archiviati nella cache disponibile per i file Parquet e 50% per i file CSV.

Quando si esegue una query su un file o una tabella dal data lake, il motore Apache Spark in Synapse eseguirà una chiamata all'archiviazione ADLS Gen2 remota per leggere i file sottostanti. Con ogni richiesta di query per leggere gli stessi dati, il motore Spark deve effettuare una chiamata all'archiviazione ADLS Gen2 remota. Questo processo ridondante aggiunge latenza al tempo di elaborazione totale. Spark offre una funzionalità di memorizzazione nella cache che è necessario impostare manualmente la cache e rilasciare la cache per ridurre al minimo la latenza e migliorare le prestazioni complessive. Tuttavia, ciò può causare la presenza di dati non aggiornati se i dati sottostanti cambiano.

Synapse Intelligent Cache semplifica questo processo memorizzando nella cache automaticamente ogni lettura all'interno dello spazio di archiviazione della cache allocato in ogni nodo Spark. Ogni richiesta di un file verificherà se il file esiste nella cache e confronterà il tag dalla risorsa di archiviazione remota per determinare se il file non è aggiornato. Se il file non esiste o se il file non è aggiornato, Spark leggerà il file e lo archivierà nella cache. Quando la cache diventa piena, il file con l'ora dell'ultimo accesso meno recente verrà rimosso dalla cache per consentire file più recenti.

La cache Synapse è una singola cache per nodo. Se si usa un nodo di dimensioni medie ed eseguito con due executor di piccole dimensioni in un singolo nodo di dimensioni medie, questi due executor condividono la stessa cache.

Abilitare o disabilitare la cache

Le dimensioni della cache possono essere modificate in base alla percentuale delle dimensioni totali del disco disponibili per ogni pool di Apache Spark. Per impostazione predefinita, la cache è disabilitata, ma è semplice come spostare la barra del dispositivo di scorrimento da 0 (disabilitato) alla percentuale desiderata per la dimensione della cache per abilitarla. Riserviamo almeno il 20% dello spazio su disco disponibile per i rimescolamenti dei dati. Per i carichi di lavoro con elevata intensità di shuffle, è possibile ridurre al minimo le dimensioni della cache o disabilitare la cache. È consigliabile iniziare con una dimensione della cache di 50% e regolare in base alle esigenze. È importante notare che se il carico di lavoro richiede molto spazio su disco nell'unità SSD locale per la memorizzazione casuale o la memorizzazione nella cache RDD, è consigliabile ridurre le dimensioni della cache per ridurre la probabilità di errore a causa di un'archiviazione insufficiente. Le dimensioni effettive dell'archiviazione disponibile e delle dimensioni della cache in ogni nodo dipendono dalla famiglia di nodi e dalle dimensioni del nodo.

Abilitazione della cache per i nuovi pool di Spark

Quando si crea un nuovo Spark pool, passare nella scheda Impostazioni aggiuntive per trovare il cursore Intelligent Cache da spostare alla dimensione preferita per abilitare la funzionalità.

Come abilitare Intelligent Cache durante la creazione di nuovi pool di Spark

Abilitazione/disabilitazione della cache per i pool di Spark esistenti

Per i pool di Spark esistenti, accedere alle impostazioni di scalabilità del pool di Apache Spark a scelta per abilitarlo, spostando il cursore su un valore maggiore di 0, o disabilitarlo, spostando il cursore su 0.

Come abilitare o disabilitare La cache intelligente per i pool di Spark esistenti

Modifica delle dimensioni della cache per i pool di Spark esistenti

Per modificare le dimensioni della cache intelligente di un pool, è necessario forzare un riavvio se il pool dispone di sessioni attive. Se il pool di Spark ha una sessione attiva, verrà mostrata l'opzione Forza nuove impostazioni. Fare clic sulla casella di controllo e selezionare Applica per riavviare automaticamente la sessione.

Forzare il riavvio di una sessione dopo la modifica dell'impostazione di Intelligent Cache

Abilitazione e disabilitazione della cache all'interno della sessione

Disabilitare facilmente la cache intelligente all'interno di una sessione eseguendo il codice seguente nel notebook:

   %spark 

   spark.conf.set("spark.synapse.vegas.useCache", "false") 
   %pyspark 

   spark.conf.set('spark.synapse.vegas.useCache', 'false') 

Abilitalo eseguendo:

   %spark 

   spark.conf.set("spark.synapse.vegas.useCache", "true") 
   %pyspark 

   spark.conf.set('spark.synapse.vegas.useCache', 'true') 

Quando usare la cache intelligente e quando no?

Questa funzionalità sarà utile se:

  • Il carico di lavoro richiede la lettura dello stesso file più volte e le dimensioni del file possono rientrare nella cache.

  • Il carico di lavoro utilizza tabelle Delta, formati di file Parquet e file CSV.

  • Stai utilizzando Apache Spark 3 o una versione più recente su Azure Synapse.

Non si noterà il vantaggio di questa funzionalità se:

  • Si sta leggendo un file che supera le dimensioni della cache, poiché l'inizio dei file potrebbe essere rimosso e le query successive dovranno recuperare i dati dalla memoria di archiviazione remota. In questo caso, non si noterà alcun vantaggio dalla cache intelligente ed è possibile aumentare le dimensioni della cache e/o le dimensioni del nodo.

  • Il carico di lavoro richiede grandi quantità di shuffle, quindi la disabilitazione della cache intelligente libera spazio disponibile per evitare che il processo non riesca a causa di spazio di archiviazione insufficiente.

  • Si usa un pool di Spark 3.3, è necessario aggiornare il pool alla versione più recente di Spark.

Ulteriori informazioni

Per altre informazioni su Apache Spark, vedere gli articoli seguenti:

Per informazioni sulla configurazione delle impostazioni della sessione Spark

Passaggi successivi

Un pool di Apache Spark offre funzionalità di calcolo big data open source in cui i dati possono essere caricati, modellati, elaborati e distribuiti per ottenere informazioni analitiche più veloci. Per altre informazioni su come crearne uno per eseguire i carichi di lavoro Spark, vedere le esercitazioni seguenti: