Aller au contenu principal

Où Databricks écrit-il les données ?

Cet article détaille les emplacements où Databricks écrit les données lors des opérations et configurations quotidiennes. Databricks disposant d'une suite d'outils qui couvrent de nombreuses technologies et interagissent avec les ressources cloud dans un modèle de responsabilité partagée, les emplacements default utilisés pour stocker les données varient en fonction de l'environnement d'exécution, des configurations et des bibliothèques.

Les informations contenues dans cet article sont destinées à vous aider à comprendre les chemins par default pour diverses opérations et comment les configurations pourraient altérer ces defaults. Pour obtenir des conseils sur la configuration et le contrôle de l'accès aux données, consultez Gouvernance des données et de l'IA avec Unity Catalog.

Pour en savoir plus sur la configuration du stockage d'objets et d'autres sources de données, consultez Se connecter aux sources de données et aux services externes.

Qu'est-ce que le stockage d'objets ?

Dans le cloud computing, le stockage d'objets ou le stockage de blobs désigne des conteneurs de stockage qui conservent les données sous forme d'objets, chaque objet étant constitué de données, de métadonnées et d'un identifiant de ressource unique et global (URI). Les opérations de manipulation de données de stockage d'objets sont souvent limitées à la création, la lecture, la mise à jour et la suppression (CRUD) via une interface API REST. Certaines offres de stockage d'objets incluent des fonctionnalités telles que le contrôle de version et la gestion du cycle de vie. Le stockage d'objets présente les avantages suivants :

  • Haute disponibilité, durabilité et fiabilité.
  • Coûts de stockage inférieurs par rapport à la plupart des autres options de stockage.
  • Extensible à l'infini (limité par la quantité totale de stockage disponible dans une région cloud donnée).

La plupart des data lakes basés sur le cloud sont construits sur des formats de données open source dans le stockage d'objets cloud.

Comment Databricks utilise-t-il le stockage d'objets ?

Le stockage d'objets est la principale forme de stockage utilisée par Databricks pour la plupart des opérations. Vous configurez l'accès au stockage d'objets cloud à l'aide des identifiants de stockage Unity Catalog et des emplacements externes. Ces emplacements sont ensuite utilisés pour stocker les fichiers de données prenant en charge les tables et les volumes. Voir Se connecter au stockage d'objets cloud à l'aide de Unity Catalog.

À moins que vous ne configuriez spécifiquement une table par rapport à un système de données externe, toutes les tables créées dans Databricks stockent les données dans le stockage d'objets cloud.

Les fichiers Delta Lake stockés dans un stockage d'objets cloud constituent la base de données pour un lakehouse Databricks.

Qu'est-ce que le stockage par blocs ?

Dans le cloud computing, le stockage par blocs ou le stockage sur disque fait référence aux volumes de stockage qui correspondent aux disques durs (HDD) traditionnels ou aux disques électroniques (SSD), également connus sous le nom de « disques durs ». Lors du déploiement du stockage par blocs dans un environnement de cloud computing, une partition logique d'un ou plusieurs disques physiques est généralement déployée. Les implémentations varient légèrement entre les offres de produit et les fournisseurs de cloud, mais les caractéristiques suivantes sont généralement présentes dans toutes les implémentations :

  • Toutes les machines virtuelles (VM) nécessitent un volume de stockage de blocs attaché.
  • Les fichiers et programmes installés sur un volume de stockage en bloc persistent tant que le volume de stockage en bloc persiste.
  • Les volumes de stockage par blocs sont souvent utilisés pour le stockage temporaire des données.
  • Les volumes de stockage en mode bloc attachés aux VMs sont généralement supprimés en même temps que les VMs.

Comment Databricks utilise-t-il le stockage par blocs ?

Lorsque vous activez les ressources de compute, Databricks configure et déploie les machines virtuelles et attache les volumes de stockage de blocs. Ce stockage de blocs est utilisé pour stocker les fichiers de données éphémères pendant la durée de vie de la ressource de compute. Ces fichiers incluent le système d'exploitation, les bibliothèques installées et les données utilisées par le cache de disque. Bien qu'Apache Spark utilise le stockage par blocs en arrière-plan pour une parallélisation et un chargement des données efficaces, la plupart du code exécuté sur Databricks ne sauvegarde ni ne charge directement les données sur le stockage par blocs.

Vous pouvez exécuter du code arbitraire, tel que des commandes Python ou Bash, qui utilise le stockage de blocs associé à votre nœud Driver. Voir Travailler avec des fichiers dans un stockage éphémère attaché au nœud Driver.

Où Unity Catalog stocke-t-il les fichiers de données ?

Unity Catalog s’appuie sur les administrateurs pour configurer les relations entre le stockage cloud et les objets relationnels. L'emplacement exact où résident les données dépend de la manière dont les administrateurs ont configuré les relations.

Les données écrites ou uploadées vers des objets régis par Unity Catalog sont stockées dans l’un des emplacements suivants :

Où Databricks SQL stocke-t-il les données des tables ?

Lorsque vous exécutez une instruction CREATE TABLE avec Databricks SQL configuré avec Unity Catalog, le comportement default consiste à stocker les fichiers de données dans un emplacement de stockage géré configuré avec Unity Catalog. Voir Où Unity Catalog stocke-t-il les fichiers de données ?

Le catalogue hérité hive_metastore suit des règles différentes. Consultez Travailler avec le Hive metastore hérité aux côtés de Unity Catalog.

Où les Lakeflow pipelines stockent-ils les fichiers de données ?

Databricks recommande d’utiliser Unity Catalog lors de la création de LakeFlow Pipelines. Les données sont stockées dans des répertoires au niveau de l’emplacement de stockage géré associé au schéma cible.

Vous pouvez éventuellement configurer les LakeFlow Pipelines à l'aide de Hive metastore. Lorsqu'il est configuré avec Hive metastore, vous pouvez spécifier un emplacement de stockage sur DBFS ou sur un stockage d'objets cloud. Si vous ne spécifiez pas d'emplacement, un emplacement sur la racine DBFS est attribué à votre pipeline.

Où Apache Spark écrit-il les fichiers de données ?

Databricks recommande d'utiliser des noms d'objets avec Unity Catalog pour la lecture et l'écriture de données. Vous pouvez également écrire des fichiers dans les volumes Unity Catalog à l’aide du modèle suivant : /Volumes/<catalog>/<schema>/<volume>/<path>/<file-name>. Vous devez disposer de privilèges suffisants pour upload, créer, mettre à jour ou insérer des données dans les objets régis par Unity Catalog.

Vous pouvez éventuellement utiliser des indicateurs de ressources universels (URI) pour spécifier les chemins d'accès aux fichiers de données. Les URI varient en fonction du fournisseur cloud. Vous devez également disposer d'autorisations d'écriture configurées pour votre ressource de compute actuelle afin d'écrire dans le stockage d'objets cloud.

Databricks utilise le système de fichiers Databricks pour mapper les commandes de lecture et d'écriture Apache Spark vers le stockage d'objets cloud. Chaque Workspace Databricks dispose d'un emplacement de stockage racine DBFS configuré dans le compte cloud alloué au Workspace, auquel tous les utilisateurs peuvent accéder pour lire et écrire des données. Databricks ne recommande pas d'utiliser la racine DBFS pour stocker des données de production. Consultez Qu'est-ce que DBFS ? et Recommandations pour travailler avec la racine DBFS.

Où pandas écrit-il les fichiers de données sur Databricks ?

Dans Databricks Runtime 14.0 et supérieur, le répertoire de travail actuel (CWD) par default pour toutes les opérations locales de lecture et d'écriture Python est le répertoire contenant le notebook. Si vous fournissez uniquement un nom de fichier lors de l'enregistrement d'un fichier de données, pandas enregistre ce fichier de données en tant que fichier de workspace parallèlement à votre Notebook en cours d'exécution.

Toutes les versions de Databricks Runtime ne prennent pas en charge les fichiers Workspace, et certaines versions de Databricks Runtime ont un comportement différent selon que vous utilisez des Notebooks ou des dossiers Git. Consultez Quel est le répertoire de travail actuel par default ?

Où faut-il écrire les fichiers temporaires sur Databricks ?

Si vous devez écrire des fichiers temporaires que vous ne souhaitez pas conserver après l'arrêt du cluster, l'écriture des fichiers temporaires vers $TEMPDIR offre de meilleures performances que l'écriture dans le répertoire de travail actuel (CWD) si le CWD se trouve dans le système de fichiers du workspace. Vous pouvez également éviter de dépasser les limites de taille de la branch si le code s'exécute dans un dépôt. Pour plus d'informations, voir Limites de fichiers et de dépôts.

Écrire dans /local_disk0 si la quantité de données à écrire est importante et que vous souhaitez que le stockage s'adapte automatiquement.

attention

Vous ne pouvez écrire dans /local_disk0 que sur un compute avec un mode d'accès dédié (utilisateur unique) ou un mode d'accès sans isolement. Sur un compute avec mode d'accès standard (anciennement partagé) et sur un compute serverless, l'écriture dans /local_disk0 échoue avec une erreur d'autorisations.

Pour écrire de grandes quantités de données temporaires sur n'importe quel type de compute, Databricks recommande d'écrire dans un volume Unity Catalog ou dans un stockage d'objets cloud. Pour écrire des fichiers temporaires que d'autres utilisateurs ne peuvent pas lire, écrivez dans votre répertoire personnel ($HOME). Databricks ne recommande pas d'écrire des fichiers temporaires sensibles dans /tmp, car tous les utilisateurs sur le compute peuvent les lire.