Aller au contenu principal

Optimiser les performances avec la mise en cache sur Databricks

Databricks utilise la mise en cache sur disque pour accélérer la lecture des données en créant des copies des 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 automatiquement mises en cache chaque fois qu'un fichier doit être récupéré depuis un emplacement distant. Les lectures successives des mêmes données sont ensuite effectuées localement, ce qui entraîne une vitesse de lecture considérablement améliorée. Le cache fonctionne pour tous les fichiers de données Parquet (y compris les tables Delta Lake).

remarque

Dans les SQL Warehouse 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.

Le cache Delta renommé en cache sur disque

La mise en cache sur disque sur Databricks était auparavant appelée le cache Delta et le cache DBIO. Le comportement de mise en cache sur disque est une fonctionnalité propriétaire de Databricks. Ce changement de nom vise à résoudre la confusion selon laquelle il faisait partie du protocole Delta Lake.

Cache disque vs. cache Spark

Le cache de disque Databricks diffère de la mise en cache Apache Spark. Databricks recommande d'utiliser la mise en cache automatique du disque.

Le tableau suivant récapitule les principales différences entre la mise en cache sur disque et Apache Spark afin que vous puissiez choisir le meilleur outil pour votre workflow :

Fonctionnalité

Cache de disque

Cache Apache Spark

Stocké en tant que

Fichiers locaux sur un nœud worker.

Blocs en mémoire, mais cela dépend du niveau de stockage.

Appliqué à

Toute table Parquet stockée sur GCS et d'autres systèmes de fichiers.

Tout DataFrame ou RDD.

Déclenché

Automatiquement, lors de la première lecture (si le cache est activé).

Manuellement, nécessite des modifications de code.

Évalué

Lentement.

Lentement.

Disponibilité

Peut être activé ou désactivé à l'aide de drapeaux de configuration, activé par default sur certains types de nœuds.

Toujours disponible.

Expulsée

Automatiquement selon le principe du LRU ou en cas de modification de fichier, manuellement lors du redémarrage d’un cluster.

Automatiquement selon la méthode LRU, manuellement avec unpersist.

Fonctionnalité

Cache de disque

Cache Apache Spark

Stocké en tant que

Fichiers locaux sur un nœud worker.

Blocs en mémoire, mais cela dépend du niveau de stockage.

Appliqué à

Toute table Parquet stockée sur GCS et d'autres systèmes de fichiers.

Tout DataFrame ou RDD.

Déclenché

Automatiquement, lors de la première lecture (si le cache est activé).

Manuellement, nécessite des modifications de code.

Évalué

Lentement.

Lentement.

Disponibilité

Peut être activé ou désactivé à l'aide de drapeaux de configuration, activé par default sur certains types de nœuds.

Toujours disponible.

Expulsée

Automatiquement selon le principe du LRU ou en cas de modification de fichier, manuellement lors du redémarrage d’un cluster.

Automatiquement selon la méthode LRU, manuellement avec unpersist.

Cohérence du cache disque

Le cache de disque détecte automatiquement lorsque les fichiers de données sont créés, supprimés, modifiés ou écrasé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 en cache. Toute entrée obsolète est automatiquement invalidée et expulsée du cache.

Sélection des types d'instances pour utiliser la mise en cache sur disque

La mise en cache sur disque fonctionne par default avec tous les types d'instances dotées de SSD locaux.

Sur les types d’instance qui prennent en charge la mise en cache sur disque, Databricks active automatiquement la mise en cache sur disque sur ce cluster et configure des tailles de cache appropriées pour ce type d’instance.

Le cache disque est configuré pour utiliser au maximum la moitié de l'espace disponible sur les SSD locaux fournis avec les nœuds Worker. Pour les options de configuration, consultez Configurer le cache de disque.

Configurer le cache de disque

L'utilisation du disque de cache est automatiquement définie sur les types d'instances avec des SSD locaux. Databricks recommande de ne pas définir explicitement l'utilisation du disque cache.

remarque

Lorsqu'un Worker est mis hors service, le cache Spark stocké sur ce Worker est perdu. Ainsi, si la mise à l'échelle automatique est activée, il y a une certaine instabilité avec le cache. Spark devrait alors relire les partitions manquantes de la source, si nécessaire.

Configurer l'utilisation du disque

Pour configurer la manière 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 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: les données mises en cache doivent-elles être stockées au format compressé

Exemple de configuration :

ini
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

La mise en cache sur disque fonctionne par default avec tous les types d'instances dotées de SSD locaux.

Pour voir le paramètre actuel du cache de disque, exécutez la commande suivante :

Scala
spark.conf.get("spark.databricks.io.cache.enabled")

Pour activer et désactiver le cache disque, exécutez :

Scala
spark.conf.set("spark.databricks.io.cache.enabled", "[true | false]")

La désactivation du cache n'entraîne pas la suppression des données déjà présentes dans le stockage local. Au lieu de cela, cela empêche les requêtes d'ajouter de nouvelles données au cache et de lire des données depuis le cache.