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; inoltre, quando la dimensione della cache raggiunge il limite, la suddetta 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 al 65% nelle letture successive dei file archiviati nella cache disponibile per i file Parquet e il 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 secondo cui è necessario impostare e rilasciare manualmente 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.

La funzione Cache intelligente di Synapse 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 è presente nella cache e confronterà il tag con la risorsa di archiviazione remota per determinare se il file non è aggiornato. Se il file non è presente 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 e si esegue con due executor di piccole dimensioni in un singolo nodo di dimensioni medie, i due executor condividono la stessa cache.

Abilitare o disabilitare la cache

È possibile modificare le dimensioni della cache in base alla percentuale delle dimensioni totali del disco disponibili per ogni pool di Apache Spark. Per impostazione predefinita, la cache è impostata su disabilitata; tuttavia, basta spostare la barra del dispositivo di scorrimento da 0 (disabilitata) alla percentuale desiderata per le dimensioni della cache per abilitarla. Riserviamo un minimo del 20% dello spazio disponibile su disco per le sequenze casuali dei dati. Per i carichi di lavoro a elevato utilizzo di sequenze casuali, è possibile ridurre al minimo le dimensioni della cache o disabilitare la suddetta. È consigliabile iniziare con una dimensione della cache del 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 le sequenze casuali o la memorizzazione nella cache RDD, è consigliabile ridurre le dimensioni della cache per diminuire la probabilità di errore a causa di un'archiviazione insufficiente. Le dimensioni effettive dell'archiviazione disponibile e della cache in ogni nodo dipendono dalla famiglia di nodi e dalle dimensioni dei nodi.

Abilitazione della cache per i nuovi pool di Spark

Quando si crea un nuovo pool di Spark, andare alla scheda Impostazioni aggiuntive per trovare il dispositivo di scorrimento di Cache intelligente che è possibile spostare fino alle dimensioni preferite per abilitare la funzionalità.

How to enable Intelligent Cache during new Spark pools creation

Abilitazione/Disabilitazione della cache per i pool di Spark esistenti

Per i pool di Spark esistenti, andare alle impostazioni di scalabilità del pool di Apache Spark da abilitare, spostando il dispositivo di scorrimento su un valore maggiore di 0 o disabilitarlo, spostando il dispositivo di scorrimento su 0.

How to enable or disable Intelligent Cache for existing Spark pools

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à visualizzato Forza nuove impostazioni. Fare clic sulla casella di controllo e selezionare Applica per riavviare automaticamente la sessione.

Force restarting a session after changing Intelligent Cache setting

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') 

E abilitare 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 rientrano nella cache.

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

  • Si usa Apache Spark 3 o versione successiva in Azure Synapse.

Questa funzionalità non sarà utile se:

  • Si sta leggendo un file che supera le dimensioni della cache perché l'inizio dei file potrebbe essere rimosso e le query successive dovranno recuperare i dati dall'archiviazione remota. In questo caso, la funzione Cache intelligente non sarà utile e si può desiderare di aumentare le dimensioni della cache e/o del nodo.

  • Il carico di lavoro richiede grandi quantità di sequenze casuali, per cui 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.1, è necessario aggiornare il pool alla versione più recente di Spark.

Altre 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 capacità di calcolo di big data open source che consentono di caricare, modellare, elaborare e distribuire i dati per ottenere dati analitici in modo più rapido. Per altre informazioni su come crearne uno per eseguire i carichi di lavoro Spark, vedere le esercitazioni seguenti: