Où Azure Databricks écrit-il des données ?

Cet article détaille les emplacements où Azure Databricks écrit des données avec des opérations et des configurations de tous les jours. Étant donné qu’Azure Databricks dispose d’une suite d’outils qui couvrent de nombreuses technologies et interagissent avec les ressources cloud dans un modèle à responsabilité partagée, les emplacements par défaut 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 d’accès par défaut pour diverses opérations et la façon dont les configurations peuvent modifier ces valeurs par défaut. Les gestionnaires de données et les administrateurs qui recherchent des conseils sur la configuration et le contrôle de l’accès aux données doivent consulter Gouvernance des données avec Unity Catalog.

Pour découvrir la configuration de stockage d’objets et d’autres sources de données, consultez Se connecter aux sources de données.

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

Dans le domaine du cloud computing, le stockage d’objets (ou stockage blob) fait référence aux conteneurs de stockage qui conservent les données en tant qu’objets, chaque objet se composant de données, de métadonnées et d’un identificateur de ressource global unique (URI). Les opérations de manipulation des 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 d’API REST. Certaines offres de stockage d’objets incluent des fonctionnalités telles que le versioning et la gestion du cycle de vie. Le stockage d’objets offre les avantages suivants :

  • Disponibilité, durabilité et fiabilité élevées
  • Des coûts de stockage réduits par rapport à la plupart des autres options de stockage.
  • Une scalabilité infinie (limitée par la quantité totale de stockage disponible dans une région cloud donnée).

La plupart des lacs de données cloud sont basés sur des formats de données open source dans un stockage d’objets cloud.

Comment Azure Databricks utilise-t-il le stockage d’objets ?

Le stockage d’objets est la principale forme de stockage utilisée par Azure Databricks pour la plupart des opérations. Vous configurez l’accès au stockage d’objets cloud à l’aide des informations d’identification de stockage du catalogue Unity et des emplacements externes. Ces emplacements sont ensuite utilisés pour stocker des fichiers de données de stockage des tables et des volumes. Consultez Se connecter au stockage d’objets cloud à l’aide de Unity Catalog.

Sauf si vous configurez spécifiquement une table pour un système de données externe, toutes les tables créées dans Azure Databricks stockent les données dans un stockage d’objets cloud.

Les fichiers Delta Lake stockés dans un stockage d’objets cloud fournissent la base des données d’un lakehouse Databricks.

Qu’est-ce que le stockage de bloc ?

Dans le domaine du cloud computing, le stockage de bloc (ou stockage sur disque) fait référence aux volumes de stockage qui correspondent aux disques durs traditionnels (HDD) ou aux disques SSD (solide-state drives), également appelés « disques durs ». Pour le déploiement d’un stockage de bloc dans un environnement de cloud computing, une partition logique d’un ou de plusieurs lecteurs physiques est généralement déployée. Les implémentations varient légèrement selon les offres de produits et les fournisseurs de cloud, mais les caractéristiques suivantes sont généralement présentes :

  • Toutes les machines virtuelles nécessitent un volume de stockage de bloc attaché.
  • Les fichiers et programmes installés sur un volume de stockage de bloc sont conservés tant que le volume de stockage de bloc persiste.
  • Les volumes de stockage de bloc sont souvent utilisés pour le stockage de données temporaire.
  • Les volumes de stockage de bloc attachés à des machines virtuelles sont généralement supprimés en même temps que les machines virtuelles.

Comment Azure Databricks utilise-t-il le stockage de bloc ?

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

Vous pouvez exécuter du code arbitraire, comme des commandes Python ou Bash, utilisant le stockage de bloc attaché à votre nœud de pilote. Voir Travailler avec des fichiers dans un stockage éphémère attaché au nœud du pilote.

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 façon dont les administrateurs ont configuré les relations.

Les données écrites ou chargées sur des objets régis par Unity Catalog sont stockées à l’un des emplacements suivants :

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

Lorsque vous exécutez une CREATE TABLE instruction avec Databricks SQL configuré avec Unity Catalog, le comportement par défaut consiste à stocker des fichiers de données dans un emplacement de stockage managé configuré avec Unity Catalog. Consultez Où Unity Catalog stocke-t-il les fichiers de données ?.

Le catalogue hérité hive_metastore suit des règles différentes. Consultez Utilisation de Unity Catalog et du metastore Hive hérité.

Où Delta Live Tables stocke-t-il les fichiers de données ?

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

Vous pouvez éventuellement configurer des pipelines DLT à l’aide du metastore Hive. Lorsqu’il est configuré avec le metastore Hive, vous pouvez spécifier un emplacement de stockage sur DBFS ou le stockage d’objets cloud. Si vous ne spécifiez pas d’emplacement, un emplacement à la racine DBFS est attribué à votre pipeline.

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

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

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

Azure Databricks utilise le système de fichiers Databricks pour mapper les commandes de lecture et d’écriture Apache Spark au stockage d’objets cloud. Chaque espace de travail Azure Databricks dispose d’un emplacement de stockage racine DBFS configuré dans le compte cloud alloué pour l’espace de travail, 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 les données de production. Consultez Qu’est-ce que DBFS ? et Recommandations pour l’utilisation de la racine DBFS.

Où pandas écrit-t-il les fichiers sur Azure Databricks ?

Dans Databricks Runtime 14.0 et versions ultérieures, le répertoire de travail actuel (CWD) par défaut pour toutes les opérations de lecture et d’écriture Python locales 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 d’espace de travail parallèle à votre bloc-notes en cours d’exécution.

Toutes les versions de Databricks Runtime ne prennent pas en charge les fichiers d’espace de travail, 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 défaut ?.

Où dois-je écrire les fichiers temporaires sur Azure Databricks ?

Si vous devez écrire des fichiers temporaires que vous ne souhaitez pas conserver après l’arrêt du cluster, écrire des fichiers temporaires $TEMPDIR dans le répertoire de travail actuel (CWD) offre de meilleures performances que de le faire dans le répertoire de travail actuel (CWD) si le CWD se trouve dans le système de fichiers de l’espace de travail. Vous pouvez également éviter de dépasser les limites de taille des branches si le code est exécuté dans un Repo. Pour plus d’informations, consultez limites de taille de fichier et de référentiel.

Écrivez dans /local_disk0 si la quantité de données à écrire est importante et que vous souhaitez que le stockage soit automatiquement mis à l’échelle.