Travailler avec des fichiers sur Databricks
Databricks dispose de plusieurs utilitaires et APIs pour interagir avec des fichiers aux emplacements suivants :
- Volumes du Unity Catalog
- Fichiers du workspace
- Stockage d'objets cloud
- Montages et racine DBFS
- Stockage éphémère attaché au nœud Driver du cluster
Cet article contient des exemples d'interaction avec des fichiers à ces emplacements pour les outils suivants :
- Apache Spark
- Spark SQL et Databricks SQL
- Utilitaires du système de fichiers Databricks (
dbutils.fsou%fs) - Databricks CLI
- API REST Databricks
- Commandes Bash Shell (
%sh) - Installations de bibliothèques limitées au Notebook en utilisant
%pip - Pandas
- Utilitaires OSS de gestion et de traitement des fichiers Python
Certaines opérations dans Databricks, en particulier celles qui utilisent des bibliothèques Java ou Scala, s'exécutent en tant que processus JVM, par exemple :
- Spécification d'une dépendance de fichier JAR à l'aide de
--jarsdans les configurations Spark - Appel de
catoujava.io.Filedans les Notebooks Scala - Sources de données personnalisées, telles que
spark.read.format("com.mycompany.datasource") - Bibliothèques qui chargent des fichiers à l'aide de
FileInputStreamde Java ouPaths.get()
Ces opérations ne prennent pas en charge la lecture ou l'écriture vers des volumes Unity Catalog ou des fichiers de workspace en utilisant des chemins de fichiers standards, tels que /Volumes/my-catalog/my-schema/my-volume/my-file.csv. Si vous devez accéder aux fichiers de volume ou aux fichiers de workspace à partir de dépendances JAR ou de bibliothèques basées sur JVM, copiez d'abord les fichiers dans le stockage local du compute à l'aide de commandes Python ou %sh, telles que %sh mv.. N'utilisez pas %fs et dbutils.fs qui utilisent la JVM. Pour accéder aux fichiers déjà copiés localement, utilisez des commandes spécifiques au langage telles que Python shutil ou utilisez les commandes %sh. Si un fichier doit être présent lors du start du cluster, utilisez un script d'initialisation pour déplacer le fichier en premier. Consultez Que sont les scripts d'initialisation ?.
Dois-je fournir un schéma URI pour accéder aux données ?
Les chemins d'accès aux données dans Databricks suivent l'une des normes suivantes :
-
Les chemins de style URI incluent un schéma URI. Pour les solutions d'accès aux données natives à Databricks, les schémas URI sont facultatifs pour la plupart des cas d'usage. Lorsque vous accédez directement aux données dans le stockage d'objets cloud, vous devez fournir le schéma URI correct pour le type de stockage.

-
Les chemins de style POSIX fournissent un accès aux données par rapport à la racine du Driver (
/). Les chemins de style POSIX ne nécessitent jamais de schéma. Vous pouvez utiliser les volumes Unity Catalog ou les montages DBFS pour fournir un accès de style POSIX aux données dans le stockage d'objets cloud. De nombreux frameworks ML et d'autres modules Python OSS nécessitent FUSE et ne peuvent utiliser que des chemins de style POSIX.
Les Opérations de fichiers nécessitant un accès aux données FUSE ne peuvent pas accéder directement au stockage d'objets cloud à l'aide d'URI. Databricks recommande d'utiliser les volumes Unity Catalog pour configurer l'accès à ces emplacements pour FUSE.
Sur le compute configuré avec le mode d’accès dédié (anciennement le mode d’accès mono-utilisateur) et Databricks Runtime 14.3 et versions ultérieures, Scala prend en charge FUSE pour les volumes Unity Catalog et les fichiers Workspace, à l’exception des sous-processus provenant de Scala, comme la commande Scala "cat /Volumes/path/to/file".!!.
Travailler avec des fichiers dans les volumes Unity Catalog
Databricks recommande d'utiliser les volumes Unity Catalog pour configurer l'accès aux fichiers de données non tabulaires stockés dans le stockage d'objets cloud. Pour une documentation complète sur la gestion des fichiers dans les volumes, y compris des instructions détaillées et les meilleures pratiques, consultez Travailler avec les fichiers dans les volumes Unity Catalog.
Les exemples suivants présentent des opérations courantes utilisant différents outils et interfaces :
Outil | Exemple |
|---|---|
Apache Spark |
|
Spark SQL et Databricks SQL |
|
Utilitaires du système de fichiers Databricks |
|
Databricks CLI |
|
API REST Databricks |
|
Commandes Shell Bash |
|
Installations de bibliothèques |
|
Pandas |
|
Python OSS |
|
Pour information sur les limitations des volumes et les solutions de contournement, consultez Limitations du travail avec les fichiers dans les volumes.
Travaillez avec les fichiers Workspace
Les fichiers Workspace Databricks sont les fichiers d'un workspace, stockés dans le compte de stockage du workspace. Vous pouvez utiliser les fichiers du workspace pour stocker et accéder aux fichiers tels que les notebooks, les fichiers de code source, les fichiers de données et d'autres assets du workspace.
Étant donné que les fichiers du Workspace ont des restrictions de taille, Databricks recommande de n'y stocker que de petits fichiers de données, principalement pour le développement et les tests. Pour des recommandations sur l'endroit où stocker d'autres types de fichiers, consultez Types de fichiers.
Outil | Exemple |
|---|---|
Apache Spark |
|
Spark SQL et Databricks SQL |
|
Utilitaires du système de fichiers Databricks |
|
Databricks CLI |
|
API REST Databricks |
|
Commandes Shell Bash |
|
Installations de bibliothèques |
|
Pandas |
|
Python OSS |
|
Le schéma file:/ est requis lorsque vous travaillez avec les infrastructures publiques Databricks, Apache Spark ou SQL.
Dans les Workspaces où la racine et les montages DBFS sont désactivés, vous pouvez également utiliser dbfs:/Workspace pour accéder aux fichiers du Workspace avec les utilitaires Databricks. Ceci nécessite Databricks Runtime 13.3 LTS ou une version ultérieure. Consultez Désactiver l'accès à la racine et aux montages DBFS dans votre Workspace Databricks existant.
Pour les limitations concernant l'utilisation des fichiers de workspace, voir Limitations.
Où vont les fichiers de Workspace supprimés ?
La suppression d'un fichier de workspace l'envoie à la corbeille. Vous pouvez récupérer ou supprimer définitivement des fichiers de la corbeille à l'aide de l'interface utilisateur.
Consultez Supprimer un objet.
Travailler avec des fichiers dans le stockage d'objets cloud
Databricks recommande d'utiliser les volumes Unity Catalog pour configurer un accès sécurisé aux fichiers dans le stockage d'objets cloud. Vous devez configurer les autorisations si vous choisissez d'accéder directement aux données dans le stockage d'objets cloud à l'aide d'URI. Consultez Volumes gérés et externes.
Les exemples suivants utilisent des URI pour accéder aux données dans le stockage d'objets cloud :
Outil | Exemple |
|---|---|
Apache Spark |
|
Spark SQL et Databricks SQL |
|
Utilitaires du système de fichiers Databricks |
|
Databricks CLI | Non pris en charge |
API REST Databricks | Non pris en charge |
Commandes Shell Bash | Non pris en charge |
Installations de bibliothèques |
|
Pandas | Non pris en charge |
Python OSS | Non pris en charge |
Le stockage d'objets cloud ne prend pas en charge les montages Amazon S3 avec chiffrement côté client activé.
Travailler avec des fichiers dans les montages DBFS et la racine DBFS
La racine et les montages DBFS sont tous deux obsolètes et non recommandés par Databricks. Les nouveaux comptes sont provisionnés sans accès à ces fonctionnalités. Databricks recommande d’utiliser les volumes, les emplacements externes ou les fichiers de workspace de Unity Catalog à la place.
Outil | Exemple |
|---|---|
Apache Spark |
|
Spark SQL et Databricks SQL |
|
Utilitaires du système de fichiers Databricks |
|
Databricks CLI |
|
API REST Databricks |
|
Commandes Shell Bash |
|
Installations de bibliothèques |
|
Pandas |
|
Python OSS |
|
Le schéma dbfs:/ est requis lors de l'utilisation de la Databricks CLI.
Travailler avec des fichiers dans un stockage éphémère attaché au nœud driver
Le stockage éphémère attaché au nœud driver est un stockage de blocs avec un accès de chemin d'accès basé sur POSIX intégré. Toute donnée stockée à cet emplacement disparaît lorsqu'un cluster se termine ou redémarre.
Outil | Exemple |
|---|---|
Apache Spark | Non pris en charge |
Spark SQL et Databricks SQL | Non pris en charge |
Utilitaires du système de fichiers Databricks |
|
Databricks CLI | Non pris en charge |
API REST Databricks | Non pris en charge |
Commandes Shell Bash |
|
Installations de bibliothèques | Non pris en charge |
Pandas |
|
Python OSS |
|
Le schéma file:/ est requis lorsque vous travaillez avec les infrastructures publiques Databricks.
Déplacer les données du stockage éphémère vers les volumes
Vous pourriez vouloir accéder aux données téléchargées ou enregistrées dans un stockage éphémère à l'aide d'Apache Spark. Étant donné que le stockage éphémère est attaché au driver et que Spark est un moteur de traitement distribué, toutes les opérations ne peuvent pas accéder directement aux données ici. Supposons que vous deviez déplacer des données du système de fichiers du driver vers des volumes Unity Catalog. Dans ce cas, vous pouvez copier des fichiers à l’aide des commandes magiques ou des utilitaires Databricks, comme dans les exemples suivants :
dbutils.fs.cp ("file:/<path>", "/Volumes/<catalog>/<schema>/<volume>/<path>")
%sh cp /<path> /Volumes/<catalog>/<schema>/<volume>/<path>
%fs cp file:/<path> /Volumes/<catalog>/<schema>/<volume>/<path>