Optimisation des performances avec la mise en cache sur Azure Databricks
Azure Databricks utilise la mise en cache de disque pour accélérer les lectures de données en créant des copies de fichiers de données Parquet distants dans le stockage local des nœuds à l’aide d’un format de données intermédiaire rapide. Les données sont mises en cache automatiquement chaque fois qu’un fichier doit être extrait à partir d’un emplacement distant. Les lectures successives des mêmes données sont ensuite effectuées localement, ce qui entraîne une amélioration significative de la vitesse de lecture. Le cache fonctionne pour tous les fichiers de données Parquet (y compris les tables Delta Lake).
Remarque
Dans des entrepôts SQL et Databricks Runtime 14.2 et versions ultérieures, la commande CACHE SELECT
est ignorée. Un algorithme de mise en cache de disque amélioré est utilisé à la place.
Cache delta renommé en cache de disque
La mise en cache de disque sur Azure Databricks était anciennement appelée cache Delta et cache DBIO. Le comportement de mise en cache de disque est une fonctionnalité Azure Databricks propriétaire. Ce changement de nom cherche à résoudre la confusion comme quoi il faisait partie du protocole Delta Lake.
Cache de disque ou Cache Spark
Le cache de disque Azure Databricks diffère de la mise en cache Apache Spark. Azure Databricks recommande d’utiliser la mise en cache automatique des disques.
Le tableau suivant résume les principales différences entre la mise en cache de disque et la mise en cache Apache Spark afin de vous permettre de choisir le meilleur outil pour votre flux de travail :
Fonctionnalité | Cache de disque | Cache Apache Spark |
---|---|---|
Stocké sous | Fichiers locaux sur un nœud Worker. | Blocs en mémoire, en fonction néanmoins du niveau de stockage. |
Appliqué(e) à | Table Parquet stockée sur ABFS et d’autres systèmes de fichiers. | N’importe quel DataFrame ou RDD. |
Déclenchée | Automatiquement, lors de la première lecture (si le cache est activé). | Manuellement, avec modifications du code. |
Évalué | En différé. | En différé. |
Disponibilité | Peut être activé ou désactivé avec les indicateurs de configuration, activés par défaut sur certains types de nœuds. | Toujours disponible. |
Supprimé | Automatiquement en mode dernier récemment utilisé (LRU, Last Recently Used) ou en cas de modification de fichier, manuellement lors du redémarrage d’un cluster. | Automatiquement en mode LRU, manuellement avec unpersist . |
Cohérence du cache de disque
Le cache de disque détecte automatiquement lorsque des fichiers de données sont créés, supprimés, modifiés ou remplacés et met à jour son contenu en conséquence. Vous pouvez écrire, modifier et supprimer des données de table sans avoir besoin d’invalider explicitement les données mises en cache. Toutes les entrées obsolètes sont automatiquement invalidées et supprimées du cache.
Sélection des types d'instances pour utiliser la mise en cache disque
La méthode recommandée (et la plus simple) pour utiliser la mise en cache de disque consiste à choisir un type de Worker avec des volumes SSD lorsque vous configurez votre cluster. Ces Workers sont activés et configurés pour la mise en cache de disque.
Le cache de disque est configuré pour utiliser au maximum la moitié de l’espace disponible sur les disques SSD locaux fournis avec les nœuds Worker. Pour connaître les options de configuration, consultez Configuration du cache de disque.
Configurer le cache de disque
Azure Databricks vous recommande de choisir les types d’instances Worker accélérées par le cache pour votre calcul. Elles sont configurées automatiquement de façon optimale pour le cache de disque.
Notes
Lorsqu’un Worker est désactivé, le cache Spark stocké sur ce Worker est perdu. Par conséquent, si la mise à l’échelle automatique est activée, il y a une certaine instabilité avec le cache. Spark doit ensuite relire les partitions manquantes de la source si nécessaire.
Configuration de l’utilisation du disque
Pour configurer la façon dont le cache de disque utilise le stockage local des nœuds Worker, spécifiez les paramètres de configuration Spark suivants lors de la création du cluster :
spark.databricks.io.cache.maxDiskUsage
: espace disque par nœud réservé aux données mises en cache en octetsspark.databricks.io.cache.maxMetaDataCache
: espace disque par nœud réservé aux métadonnées mises en cache en octetsspark.databricks.io.cache.compression.enabled
: indique si les données mises en cache doivent ou non être stockées dans un format compressé
Exemple de configuration :
spark.databricks.io.cache.maxDiskUsage 50g
spark.databricks.io.cache.maxMetaDataCache 1g
spark.databricks.io.cache.compression.enabled false
Activer et désactiver le cache de disque
Pour activer et désactiver le cache de disque, exécutez la commande suivante :
spark.conf.set("spark.databricks.io.cache.enabled", "[true | false]")
La désactivation du cache n’entraîne pas la suppression des données qui se trouvent déjà dans le stockage local. Cela empêche les requêtes d’ajouter de nouvelles données au cache et de lire les données qui s’y trouvent.