Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
La lecture des données depuis le stockage d’objets dans le cloud est plus lente que la lecture depuis un disque local. Sans mise en cache, les requêtes et notebooks qui lisent les mêmes fichiers de données Parquet les récupèrent à chaque fois depuis le stockage d’objets dans le cloud.
Azure Databricks utilise la mise en cache sur disque pour accélérer les lectures de données. Lorsqu’un nœud récupère un fichier de données Parquet depuis un stockage distant, il stocke automatiquement une copie sur son stockage local dans un format intermédiaire rapide. Les lectures ultérieures des mêmes données s’exécutent localement et sont nettement plus rapides. 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.
Bonnes pratiques
Le cache disque aide surtout avec des charges de travail qui lisent les mêmes données plusieurs fois, comme les requêtes répétées ou itératives sur les mêmes tables. Azure Databricks l’active automatiquement sur les types d’instances de travailleurs qui le supportent. Pour aider le cache disque à accélérer les lectures, suivez ces pratiques :
- Choisissez un type d’instance worker qui prend en charge la mise en cache disque. Voir Sélection des types d'instances pour utiliser la mise en cache disque.
- Utilisez le cache disque au lieu du cache Apache Spark pour des lectures répétées des données Parquet et Delta Lake. Voir : Comparer le cache disque et le cache Spark.
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 selon laquelle il faisait partie du protocole Delta Lake.
Comparez le cache disque et le cache Spark
Le cache de disque Azure Databricks diffère de la mise en cache Apache Spark. 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, mais cela dépend du niveau de stockage. |
| Appliqué(e) à | Toute table Parquet stockée sur ABFS et sur d’autres systèmes de fichiers. | N’importe quel DataFrame ou RDD. |
| Déclenché | Automatiquement, lors de la première lecture (si le cache est activé). | Manuellement, nécessite des modifications du code. |
| Évalué | Paresseusement. | Paresseusement. |
| Disponibilité | Activé par défaut sur certains types de nœuds. Vous l’activez ou le désactivez avec des indicateurs de configuration. | Toujours disponible. |
| Expulsé | Automatiquement selon le principe LRU (Least 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 processus de travail sont activés et configurés pour la mise en cache sur 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 Configurer le cache disque.
Configurer le cache de disque
Databricks recommande de choisir des types d’instances worker avec accélération du cache pour votre cluster de calcul. Elles sont configurées automatiquement de façon optimale pour le cache de disque.
Remarque
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.
Configurer l’utilisation du disque
Pour configurer comment le cache disque utilise le stockage local des nœuds ouvriers, spécifiez ces paramètres de configuration Spark 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 octets -
spark.databricks.io.cache.maxMetaDataCache: espace disque par nœud réservé aux métadonnées mises en cache en octets -
spark.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 ou désactiver le cache de disque
Pour voir le paramètre actuel du cache disque, exécutez :
spark.conf.get("spark.databricks.io.cache.enabled")
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.