Share via


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 courantes. Étant donné qu’Azure Databricks fournit 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 source 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 de données dans le stockage d’objets sont souvent limitées à la création, à la lecture, à la mise à jour et à la suppression (CRUD, create, read, update, delete) à l’aide d’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
  • Coût de stockage inférieur à celui de la plupart des autres options de stockage
  • Scalabilité infinie (limitée par la quantité totale de stockage disponible dans une région donnée du cloud)

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. Le système de fichiers Databricks (DBFS, Databricks Filesystem) permet aux utilisateurs d’Azure Databricks d’interagir avec des fichiers dans un stockage d’objets comme ils le feraient avec n’importe quel autre système de fichiers. 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 pour Databricks Lakehouse.

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, hard disk drive) ou aux disques SSD, également appelés simplement « disques durs ». Pour le déploiement d’un stockage de bloc dans un environnement de cloud computing, une partition logique d’un ou 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 du calcul. Ces fichiers incluent le système d’exploitation et les bibliothèques installées, en plus des 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, notamment 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 :

  • Emplacement de stockage managé associé à un metastore, un catalogue ou un schéma. Les données écrites ou chargées dans des tables managées et des volumes managés utilisent le stockage managé. Consultez Stockage managé.
  • Emplacement externe configuré avec les informations d’identification de stockage. Les données écrites ou chargées dans des tables externes et des volumes externes utilisent un stockage externe. Consultez Se connecter au stockage d’objets cloud à l’aide de Unity Catalog.

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 calcul actuel é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 est fourni avec 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 le système de fichiers Databricks (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 de la grappe, l’écriture des fichiers temporaires $TEMPDIR dans le répertoire de travail actuel (CWD) 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 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 à /local_disk0 si la quantité de données à écrire est très importante et que vous souhaitez que le stockage se met à l’échelle automatique.