Partager via


Travailler avec des fichiers dans les volumes de Unity Catalog

Cette page contient des exemples de gestion de fichiers dans des volumes de catalogue Unity pour différentes interfaces utilisateur, outils, bibliothèques et langages.

Databricks recommande d’utiliser des volumes pour gérer tous les accès aux données non tabulaires dans le stockage d’objets cloud et pour stocker les fichiers de prise en charge de la charge de travail. Voici quelques exemples :

  • Fichiers de données pour l’ingestion, tels que CSV, JSON et Parquet
  • Fichiers texte, image et audio pour les charges de travail de science des données, ML et IA
  • Artéfacts CSV ou JSON générés par Azure Databricks pour l'intégration avec des systèmes externes
  • Bibliothèques, scripts init et artéfacts de construction

Les volumes permettent des chemins de type POSIX (Portable Operating System Interface) qui fonctionnent avec des outils et infrastructures dépendant du Système de fichiers en espace utilisateur (FUSE). Cela les rend idéales pour les frameworks Machine Learning et les modules Python open source qui nécessitent un accès au style POSIX. Pour plus d’informations sur les schémas d’URI, les chemins POSIX et leur relation avec les volumes, voir Dois-je fournir un schéma d’URI pour accéder aux données ?.

Méthodes de gestion des fichiers dans des volumes

Pour obtenir des exemples rapides de chaque méthode, consultez Utiliser des fichiers dans des volumes de catalogue Unity.

Interface Descriptif
Interface utilisateur de l’Explorateur de catalogues Gestion interactive des fichiers via l’espace de travail Azure Databricks
Accès par programmation Lire et écrire des fichiers à l’aide d’Apache Spark, Pandas ou SQL
Utilitaires Databricks Opérations de fichier utilisant dbutils.fs ou des commandes de magie (%fs, %sh) dans les notebooks
Commandes SQL Opérations de fichier utilisant des mots clés SQL (LIST, PUT INTO, GET, REMOVE) et des connecteurs
Databricks CLI Opérations en ligne de commande utilisant databricks fs commandes
SDK Opérations de fichier à l’aide de Kits de développement logiciel (SDK) Python, Java ou Go
REST API Accès direct à l’API pour les intégrations personnalisées

Utiliser l’Explorateur de catalogues

L’Explorateur de catalogues propose des options pour les tâches courantes de gestion de fichiers pour les fichiers stockés avec des volumes de catalogue Unity.

Pour interagir avec les fichiers d’un volume, procédez comme suit :

  1. Dans votre espace de travail Azure Databricks, cliquez sur l’icône Données.Catalogue.
  2. Recherchez ou parcourez le volume avec lequel vous souhaitez travailler et sélectionnez-le.

Pour plus d’informations sur la création et la gestion des volumes, consultez Créer et gérer des volumes de catalogue Unity.

Charger des fichiers sur un volume

Vous pouvez charger des fichiers de n’importe quel format ( structuré, semi-structuré ou non structuré) dans un volume. Lorsque vous chargez via l’interface utilisateur, il existe une limite de taille de fichier de 5 Go. Toutefois, les volumes eux-mêmes prennent en charge les fichiers jusqu’à la taille maximale prise en charge par le stockage cloud sous-jacent. Vous pouvez écrire des fichiers très volumineux à l’aide de Spark et charger des fichiers volumineux à l’aide de l’API Azure Databricks ou des kits sdk.

Spécifications

Avant de charger sur un volume, vérifiez que vous disposez des éléments suivants :

  • Un espace de travail avec le catalogue Unity activé
  • WRITE VOLUME sur le volume cible
  • USE SCHEMA sur le schéma parent
  • USE CATALOG sur le catalogue parent

Pour plus d’informations, consultez les privilèges du catalogue Unity et les objets sécurisables.

Étapes de chargement

  1. Dans l’Explorateur de catalogues, cliquez sur Ajouter des données>Charger sur le volume.
  2. Cliquez sur Parcourir ou déposer des fichiers dans la zone de dépôt.
  3. Sélectionnez un volume ou un répertoire, ou collez un chemin d’accès au volume.
    • Si aucun volume n’existe dans le schéma cible, créez-en un.
    • Vous pouvez également créer un répertoire dans le volume cible.

Boîte de dialogue pour le chargement d’un fichier dans un volume

Vous pouvez également accéder à l’interface utilisateur de chargement de la manière suivante :

  • Dans la barre latérale : Nouveau>Ajouter des données> sur le volume
  • À partir d’un bloc-notes : Charger> desfichiers vers le volume

Étapes suivantes

Une fois que vous avez téléchargé sur un volume, vous pouvez effectuer les opérations suivantes :

  • Créez une table managée du catalogue Unity à partir des fichiers. Consultez Créer une table à partir de données dans un volume.
  • Utiliser les fichiers pour les charges de travail d'Apprentissage Automatique et de Science des Données.
  • Configurer des bibliothèques de cluster, des bibliothèques à l'échelle du notebook ou des dépendances de tâche en utilisant les fichiers chargés
  • Ingérer des données pour les pipelines d’ingénierie à l’aide d’Auto Loader ou COPY INTO
  • Traiter des fichiers avec des fonctions IA telles que ai_parse_document
  • Configurer des déclencheurs d’arrivée de fichier dans des tâches
  • Charger des documents à utiliser avec AgentBricks (par exemple, scénarios d'assistant de connaissances)

Télécharger des fichiers à partir d’un volume

Pour télécharger des fichiers à partir d’un volume, procédez comme suit :

  1. Sélectionnez un ou plusieurs fichiers.
  2. Cliquez sur Télécharger pour télécharger ces fichiers.

Supprimer des fichiers d’un volume

Pour supprimer des fichiers d’un volume, procédez comme suit :

  1. Sélectionnez un ou plusieurs fichiers.
  2. Cliquez sur Supprimer.
  3. Cliquez sur Supprimer pour confirmer dans la boîte de dialogue qui s’affiche.

Créer un répertoire vide

Pour créer un répertoire dans un volume, procédez comme suit :

  1. Sous l’onglet Vue d’ensemble du volume, cliquez sur Créer un répertoire.
  2. Entrez un nom de répertoire.
  3. Cliquez sur Créer.

Télécharger un annuaire

Pour télécharger un répertoire dans un volume, procédez comme suit :

  1. Cliquez sur l’icône de menu Kebab. Menu kebab à droite du répertoire.
  2. Cliquez sur Télécharger le répertoire.

Le répertoire est téléchargé en tant que fichier ZIP.

Supprimer des répertoires d’un volume

Pour supprimer des répertoires d’un volume, procédez comme suit :

  1. Sélectionnez un ou plusieurs répertoires.
  2. Cliquez sur Supprimer.
  3. Cliquez sur Supprimer pour confirmer dans la boîte de dialogue qui s’affiche.

Tâches de gestion des fichiers d’interface utilisateur pour les volumes

Cliquez sur l’icône du menu Kebab à côté d’un nom de fichier pour effectuer les actions suivantes :

  • Copier le chemin d’accès
  • Télécharger le fichier
  • Supprimer un fichier
  • Créer une table

Créer une table à partir de données dans un volume

Azure Databricks fournit une interface utilisateur pour créer une table managée Unity Catalog à partir d’un fichier, de fichiers ou d’un répertoire de fichiers dans un volume Unity Catalog.

Vous devez disposer d’autorisations CREATE TABLE dans le schéma cible et avoir accès à un entrepôt SQL en cours d’exécution.

  1. Sélectionnez un ou plusieurs fichiers, ou un répertoire. Les fichiers doivent avoir la même disposition de données.

  2. Cliquez sur Créer une table. La boîte de dialogue Créer une table à partir de volumes s’affiche.

  3. Utilisez la boîte de dialogue fournie pour passer en revue un aperçu des données et effectuer les configurations suivantes :

    • Choisissez de créer une table ou de remplacer une table existante
    • Sélectionnez le catalogue cible et le schéma.
    • Spécifiez le nom de la table.
    • (Facultatif) Remplacez les noms et les types de colonnes par défaut, ou choisissez d’exclure des colonnes.

    Note

    Cliquez sur Attributs avancés pour afficher des options supplémentaires.

  4. Cliquez sur Créer une table pour créer la table avec les attributs spécifiés. Une fois l’opération terminée, Catalog Explorer affiche les détails du tableau.

Travailler par programmation avec des fichiers dans des volumes

Lisez et écrivez des fichiers dans des volumes à partir de tous les langages et éditeurs d’espace de travail pris en charge au format suivant :

/Volumes/catalog_name/schema_name/volume_name/path/to/files

Vous interagissez avec les fichiers dans des volumes de la même façon que vous interagissez avec les fichiers dans n’importe quel emplacement de stockage d’objets cloud. Cela signifie que si vous gérez actuellement du code qui utilise des URI cloud, des chemins de montage DBFS ou des chemins racine DBFS pour interagir avec des données ou des fichiers. Vous pouvez mettre à jour votre code pour utiliser des volumes à la place.

Note

Les volumes sont utilisés uniquement pour des données non tabulaires. Databricks recommande d’inscrire des données tabulaires à l’aide de tables Unity Catalog, puis de lire et d’écrire les données à l’aide des noms de tables.

Lire et écrire des données dans des volumes

Utilisez Apache Spark, pandas, Spark SQL et d’autres bibliothèques OSS pour lire et écrire des fichiers de données dans des volumes.

Les exemples suivants montrent la lecture d’un fichier CSV stocké dans un volume :

Python

df = spark.read.format("csv").load("/Volumes/catalog_name/schema_name/volume_name/data.csv")

display(df)

Pandas

import pandas as pd

df = pd.read_csv('/Volumes/catalog_name/schema_name/volume_name/data.csv')

display(df)

SQL

SELECT * FROM csv.`/Volumes/catalog_name/schema_name/volume_name/data.csv`

Commandes utilitaires pour les fichiers dans les volumes

Databricks fournit les outils suivants pour gérer les fichiers dans les volumes :

  • Sous-module dbutils.fs dans les Utilitaires Databricks. Consultez Utilitaire de système de fichiers (dbutils.fs).
  • Commande magique %fs, qui est un raccourci pour dbutils.fs.
  • Commande magique %sh, qui permet la commande Bash sur les volumes.

Pour obtenir un exemple d’utilisation de ces outils afin de télécharger des fichiers à partir d’Internet, décompresser des fichiers et déplacer des fichiers d’un stockage de blocs éphémères vers des volumes, consultez Télécharger des données à partir d’Internet.

Vous pouvez aussi utiliser des packages OSS pour les commandes de l’utilitaire de fichiers, telles que le module Python os, comme illustré dans l’exemple suivant :

import os

os.mkdir('/Volumes/catalog_name/schema_name/volume_name/directory_name')

Gérer des fichiers dans des volumes à partir d’outils externes

Databricks fournit une suite d’outils permettant de gérer par programmation les fichiers dans des volumes à partir de votre environnement local ou de systèmes intégrés.

Commandes SQL pour les fichiers dans les volumes

Azure Databricks prend en charge les mots clés SQL suivants pour interagir avec des fichiers dans des volumes :

Dans les notebooks Azure Databricks et l’éditeur de requête SQL, seule la commande LIST est prise en charge. Les autres commandes SQL (PUT INTO, GETet REMOVE) sont disponibles via les connecteurs et pilotes Databricks SQL suivants, qui prennent en charge la gestion des fichiers dans les volumes :

Gérer des fichiers dans des volumes avec Databricks CLI

Utilisez les sous-commandes dans databricks fs. Voir fs le groupe de commandes.

Note

L’interface Databricks CLI nécessite que le schéma dbfs:/ précède tous les chemins d’accès aux volumes. Par exemple : dbfs:/Volumes/catalog_name/schema_name/volume_name/path/to/data.

Gérer les fichiers dans les volumes avec des kit de développement logiciel (SDK)

Les kits de développement logiciel (SDK) suivants prennent en charge la gestion des fichiers dans les volumes :

Gérer les fichiers dans les volumes avec l’API REST

Utilisez l’API Files pour gérer les fichiers dans les volumes.

Exemples d’API REST pour les fichiers dans les volumes

Les exemples suivants utilisent curl et l’API REST Databricks pour effectuer des tâches de gestion des fichiers dans des volumes.

L’exemple suivant crée un dossier vide nommé my-folder dans le volume spécifié.

curl --request PUT "https://${DATABRICKS_HOST}/api/2.0/fs/directories/Volumes/main/default/my-volume/my-folder/" \
--header "Authorization: Bearer ${DATABRICKS_TOKEN}"

L’exemple suivant crée un fichier nommé data.csv avec les données spécifiées dans le chemin d’accès spécifié dans le volume.

curl --request PUT "https://${DATABRICKS_HOST}/api/2.0/fs/files/Volumes/main/default/my-volume/my-folder/data.csv?overwrite=true" \
--header "Authorization: Bearer ${DATABRICKS_TOKEN}" \
--header "Content-Type: application/octet-stream" \
--data-binary $'id,Text\n1,Hello World!'

L’exemple suivant liste le contenu d’un volume dans le chemin d’accès spécifié. Cet exemple utilise jq pour mettre en forme le json du corps de la réponse pour faciliter la lecture.

curl --request GET "https://${DATABRICKS_HOST}/api/2.0/fs/directories/Volumes/main/default/my-volume/" \
--header "Authorization: Bearer ${DATABRICKS_TOKEN}" | jq .

L’exemple suivant liste le contenu d’un dossier dans un volume dans le chemin d’accès spécifié. Cet exemple utilise jq pour mettre en forme le json du corps de la réponse pour faciliter la lecture.

curl --request GET "https://${DATABRICKS_HOST}/api/2.0/fs/directories/Volumes/main/default/my-volume/my-folder" \
--header "Authorization: Bearer ${DATABRICKS_TOKEN}" | jq .

L’exemple suivant imprime le contenu d’un fichier dans le chemin d’accès spécifié dans un volume.

curl --request GET "https://${DATABRICKS_HOST}/api/2.0/fs/files/Volumes/main/default/my-volume/my-folder/data.csv" \
--header "Authorization: Bearer ${DATABRICKS_TOKEN}"

L’exemple suivant supprime un fichier dans le chemin d’accès spécifié d’un volume.

curl --request DELETE "https://${DATABRICKS_HOST}/api/2.0/fs/files/Volumes/main/default/my-volume/my-folder/data.csv" \
--header "Authorization: Bearer ${DATABRICKS_TOKEN}"

L’exemple suivant supprime un dossier du volume spécifié.

curl --request DELETE "https://${DATABRICKS_HOST}/api/2.0/fs/directories/Volumes/main/default/my-volume/my-folder/" \
--header "Authorization: Bearer ${DATABRICKS_TOKEN}"

Limitations du travail avec les fichiers dans des volumes

Avant d’utiliser des fichiers dans des volumes, tenez compte des limitations suivantes :

  • Les écritures d’ajout direct ou aléatoires (non séquentielles) ne sont pas prises en charge. Cela affecte les opérations telles que l’écriture de fichiers Zip et Excel. Pour ces charges de travail :

    1. Effectuer d’abord les opérations sur un disque local
    2. Copier les résultats vers le volume de stockage

    Par exemple:

    # python
    import xlsxwriter
    from shutil import copyfile
    
    workbook = xlsxwriter.Workbook('/local_disk0/tmp/excel.xlsx')
    worksheet = workbook.add_worksheet()
    worksheet.write(0, 0, "Key")
    worksheet.write(0, 1, "Value")
    workbook.close()
    
    copyfile('/local_disk0/tmp/excel.xlsx', '/Volumes/my_catalog/my_schema/my_volume/excel.xlsx')
    
  • Les fichiers clairsemés ne sont pas pris en charge. Pour copier des fichiers clairsemés, utilisez cp --sparse=never:

    $ cp sparse.file /Volumes/my_catalog/my_schema/my_volume/sparse.file
    error writing '/dbfs/sparse.file': Operation not supported
    $ cp --sparse=never sparse.file /Volumes/my_catalog/my_schema/my_volume/sparse.file