Partager via


Cache intelligent dans Microsoft Fabric

La fonctionnalité de cache intelligent fonctionne de manière fluide en arrière-plan et met en cache les données lues à partir de votre stockage OneLake ou Azure Data Lake Storage (ADLS) Gen2 pour accélérer l’exécution des travaux Apache Spark dans Microsoft Fabric. Elle détecte aussi automatiquement les changements apportés 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 jusqu’à 60 % lors des lectures ultérieures des fichiers qui sont stockés dans le cache disponible.

Quand le moteur Apache Spark de Microsoft Fabric interroge un fichier ou une table à partir de votre lakehouse, il appelle le stockage 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 distant. Ce processus redondant ajoute de la latence à votre temps de traitement total. Spark a une exigence liée à la mise en cache nécessitant que vous définissiez manuellement le cache et que vous le libériez pour minimiser la latence et améliorer les performances globales. Toutefois, cette exigence peut entraîner des données obsolètes si les données sous-jacentes changent.

Le cache intelligent simplifie le processus en mettant automatiquement en cache chaque lecture dans l’espace de stockage de cache alloué sur chaque nœud Spark où des fichiers de données sont mis en cache sur SSD. Chaque demande de fichier vérifie si le fichier existe dans le cache de nœud local 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 le lit 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 intelligent constitue un cache unique par nœud. Si vous utilisez un nœud de taille moyenne et que vous utilisez deux petits exécuteurs sur ce nœud unique, les deux exécuteurs partagent le même cache. Par ailleurs, cette mise en cache au niveau des fichiers de données permet à plusieurs requêtes d’utiliser le même cache si elles accèdent aux mêmes données ou fichiers de données.

Fonctionnement

Dans Microsoft Fabric (Runtime 1.1 et 1.2), une mise en cache intelligente est activée par défaut pour tous les pools Spark de tous les espaces de travail ayant une taille de cache de 50 %. 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.

Quand utiliser le cache intelligent

Cette fonctionnalité vous est bénéfique si :

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

  • Votre charge de travail utilise des tables Delta Lake, ou les formats de fichiers Parquet ou CSV.

Le cache intelligent ne vous est pas utile si :

  • Vous lisez un fichier dont la taille excède celle du cache. Si c’est le cas, le début des fichiers risque d’être supprimé et les requêtes suivantes doivent récupérer de nouveau les données à partir du stockage distant. Dans ce cas, le cache intelligent ne vous offre 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. 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.

Activer et désactiver le cache intelligent

Vous pouvez désactiver ou activer le cache intelligent dans une session en exécutant le code suivant dans votre notebook ou en définissant cette configuration au niveau de l’espace de travail ou de l’élément Environnement.

spark.conf.set("spark.synapse.vegas.useCache", "false/true")