Partager via


Cache intelligent dans Azure Synapse Analytics

Le Cache intelligent fonctionne de manière transparente en arrière-plan et met en cache les données lues à partir de votre lac de données ADLS Gen2 pour accélérer l’exécution de Spark. Il détecte également automatiquement les modifications apportées aux fichiers sous-jacents et actualise automatiquement les fichiers dans le cache, ce qui vous permet de disposer des données les plus récentes. Lorsque la taille du cache atteint sa limite, le cache libère automatiquement les données les moins lues pour faire de la place aux données plus récentes. Cette fonctionnalité réduit le coût total de possession en améliorant les performances lors des lectures ultérieures de fichiers stockés dans le cache disponible, jusqu’à 65 % pour les fichiers Parquet et 50 % pour les fichiers CSV.

Lors de l’interrogation d’un fichier ou d’une table à partir de votre lac de données, le moteur Apache Spark de Synapse appelle le stockage ADLS Gen2 distant pour lire les fichiers sous-jacents. À chaque demande de requête pour lire les mêmes données, le moteur Spark doit appeler le stockage ADLS Gen2 distant. Ce processus redondant ajoute de la latence à votre temps de traitement total. Spark fournit une fonctionnalité de mise en cache dans laquelle vous devez définir manuellement le cache et libérer le cache pour minimiser la latence et améliorer les performances globales. Toutefois, vous pouvez vous retrouver avec des données obsolètes si les données sous-jacentes changent.

Le cache intelligent Synapse simplifie ce processus en mettant automatiquement en cache chaque lecture dans l’espace de stockage de cache alloué sur chaque nœud Spark. Chaque demande de fichier vérifie si le fichier existe dans le cache et compare l’étiquette du stockage distant pour déterminer si le fichier est obsolète. Si le fichier n’existe pas ou s’il est obsolète, Spark lit le fichier et le stocke dans le cache. Quand le cache est plein, le fichier dont l’heure du dernier accès est la plus ancienne est supprimé du cache pour faire de la place aux fichiers plus récents.

Le cache Synapse constitue un cache unique par nœud. Si vous utilisez un nœud de taille moyenne et utilisez deux petits exécuteurs sur un seul nœud de taille moyenne, ces deux exécuteurs partagent le même cache.

Activer ou désactiver le cache

La taille du cache peut être ajustée en fonction du pourcentage de taille totale du disque disponible pour chaque pool Apache Spark. Le cache est désactivé par défaut, mais vous pouvez très facilement l’activer en déplaçant la barre du curseur de 0 (désactivé) vers le pourcentage de taille du cache désiré. Nous réservons un minimum de 20 % de l’espace disque disponible aux lectures aléatoires de données. Pour les charges de travail aléatoires intensives, vous pouvez réduire la taille du cache ou désactiver le cache. Nous vous recommandons de commencer par une taille de cache de 50 % et de l’ajuster si nécessaire. Notez le point important suivant : si votre charge de travail nécessite beaucoup d’espace disque sur le SSD local pour la mise en cache aléatoire ou RDD, envisagez de réduire la taille du cache pour diminuer le risque d’échec causé par un stockage insuffisant. La taille réelle du stockage disponible et la taille du cache sur chaque nœud dépendent de la famille de nœuds et de la taille du nœud.

Activation du cache pour les nouveaux pools Spark

Lors de la création d’un pool Spark, accédez sous l’onglet Paramètres supplémentaires afin de localiser le curseur Cache intelligent. Déplacez-le vers la taille de votre choix pour activer la fonctionnalité.

How to enable Intelligent Cache during new Spark pools creation

Activation/désactivation du cache pour les pools Spark existants

Pour les pools Spark existants, accédez aux Paramètres de mise à l’échelle du pool Apache Spark de votre choix. Pour activer le cache, déplacez le curseur sur une valeur supérieure à 0 ; pour le désactiver, déplacez le curseur sur 0.

How to enable or disable Intelligent Cache for existing Spark pools

Modification de la taille du cache pour les pools Spark existants

Pour modifier la taille du Cache intelligent d’un pool, vous devez forcer un redémarrage si le pool a des sessions actives. Si le pool Spark a une session active, vous voyez apparaître Forcer les nouveaux paramètres. Cochez la case, puis sélectionnez Appliquer pour redémarrer automatiquement la session.

Force restarting a session after changing Intelligent Cache setting

Activation et désactivation du cache dans la session

Pour désactiver facilement le Cache intelligent dans une session, exécutez le code suivant dans votre notebook :

   %spark 

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

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

Pour l’activer, exécutez :

   %spark 

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

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

Quand utiliser le Cache intelligent et quand ne pas l’utiliser ?

Cette fonctionnalité vous sera utile dans les situations suivantes :

  • Votre charge de travail nécessite la lecture du même fichier plusieurs fois et la taille du fichier peut tenir dans le cache.

  • Votre charge de travail utilise des tables Delta, des formats de fichiers Parquet et des fichiers CSV.

  • Vous utilisez Apache Spark 3 ou version ultérieure sur Azure Synapse.

Cette fonctionnalité ne vous sera pas utile dans les situations suivantes :

  • Vous lisez un fichier qui dépasse la taille du cache, car le début des fichiers peut être supprimé et les requêtes suivantes devront récupérer de nouveau les données du stockage distant. Dans ce cas, le Cache intelligent ne vous offrira aucun avantage et vous souhaiterez peut-être augmenter la taille du cache et/ou la taille du nœud.

  • Votre charge de travail nécessite de grandes quantités de lectures aléatoires. Dans ce cas, la désactivation du Cache intelligent libère de l’espace disponible pour éviter qu’un manque d’espace de stockage fasse échouer votre travail.

  • Vous utilisez un pool Spark 3.1. Dans ce cas, vous devez mettre à niveau votre pool vers la dernière version de Spark.

En savoir plus

Pour en savoir plus sur Apache Spark, consultez les articles suivants :

Pour en savoir plus sur la configuration des paramètres de session Spark

Étapes suivantes

Un pool Apache Spark fournit des fonctionnalités de calcul de Big Data open source, où les données peuvent être chargées, modélisées, traitées et distribuées pour obtenir un insight analytique plus rapide. Pour savoir comment en créer un pour exécuter vos charges de travail Spark, consultez les tutoriels suivants :