Partager via


Charger des données à l’aide de COPY INTO avec des volumes ou emplacements externes Unity Catalog

Apprenez à utiliser COPY INTO pour ingérer des données dans des tables gérées ou externes Unity Catalog à partir de n’importe quel format de source et de fichier pris en charge par COPY INTO. Unity Catalog ajoute de nouvelles options pour configurer l’accès sécurisé aux données brutes. Vous pouvez utiliser des volumes Unity Catalog ou des emplacements externes pour accéder aux données dans le stockage d’objets cloud.

Databricks recommande d’utiliser des volumes pour accéder aux fichiers dans le stockage cloud dans le cadre du processus d’ingestion à l’aide de COPY INTO. Pour plus d’informations sur les recommandations relatives à l’utilisation de volumes et d’emplacements externes, consultez Meilleures pratiques Unity Catalog.

Cet article explique comment utiliser la commande COPY INTO pour charger des données à partir d’un conteneur Azure Data Lake Storage Gen2 (ADLS Gen2) dans votre compte Azure vers une table de Databricks SQL.

Les étapes décrites dans cet article supposent que votre administrateur a configuré un volume ou emplacement externe Unity Catalog pour que vous puissiez accéder à vos fichiers sources dans ADLS Gen2. Si votre administrateur a configuré une ressource de calcul pour utiliser un principal de service, consultez Charger des données à l’aide de COPY INTO avec un principal de service ou Tutoriel : COPY INTO avec Spark SQL à la place. Si votre administrateur vous a donné des informations d’identification temporaires (un jeton SAS Blob), suivez plutôt les étapes décrites dans Charger des données à l’aide de COPY INTO avec des informations d’identification temporaires.

Avant de commencer

Avant d’utiliser COPY INTO pour charger des données à partir d’un volume Unity Catalog ou d’un chemin de stockage d’objets cloud défini comme emplacement externe Unity Catalog, vous devez disposer des éléments suivants :

  • Le privilège READ VOLUME sur un volume ou le privilège READ FILES sur un emplacement externe.

    Pour plus d’informations sur la création de volumes, consultez la présentation des volumes Unity Catalog.

    Pour plus d’informations sur la création d’emplacements externes, consultez Créer un emplacement externe pour connecter le stockage cloud à Azure Databricks.

  • Le chemin d’accès à vos données sources sous la forme d’une URL de stockage d’objets cloud ou d’un chemin d’accès au volume.

    Exemple d’URL de stockage d’objets cloud : abfss://container@storageAccount.dfs.core.windows.net/raw-data/json.

    Exemple de chemin d’accès au volume : /Volumes/quickstart_catalog/quickstart_schema/quickstart_volume/raw_data/json.

  • Le privilège USE SCHEMA sur le schéma qui contient la table cible.

  • Le privilège USE CATALOG sur le catalogue parent.

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

Charger des données à partir d’un volume

Pour charger des données à partir d’un volume Unity Catalog, vous devez disposer du privilège READ VOLUME. Les privilèges de volume s’appliquent à tous les répertoires imbriqués sous le volume spécifié.

Par exemple, si vous avez accès à un volume avec le chemin d'accès /Volumes/quickstart_catalog/quickstart_schema/quickstart_volume/, les commandes suivantes sont valides :

COPY INTO landing_table
FROM '/Volumes/quickstart_catalog/quickstart_schema/quickstart_volume/raw_data'
FILEFORMAT = PARQUET;

COPY INTO json_table
FROM '/Volumes/quickstart_catalog/quickstart_schema/quickstart_volume/raw_data/json'
FILEFORMAT = JSON;

Si vous le souhaitez, vous pouvez également utiliser un chemin d’accès au volume avec le schéma dbfs. Par exemple, les commandes suivantes sont également valides :

COPY INTO landing_table
FROM 'dbfs:/Volumes/quickstart_catalog/quickstart_schema/quickstart_volume/raw_data'
FILEFORMAT = PARQUET;

COPY INTO json_table
FROM 'dbfs:/Volumes/quickstart_catalog/quickstart_schema/quickstart_volume/raw_data/json'
FILEFORMAT = JSON;

Charger des données à l’aide d’un emplacement externe

L’exemple suivant charge des données dans une table des données à partir d’ADLS Gen2 à l’aide d’emplacements externes Unity Catalog pour fournir un accès au code source.

COPY INTO my_json_data
FROM 'abfss://container@storageAccount.dfs.core.windows.net/jsonData'
FILEFORMAT = JSON;

Héritage du privilège d’emplacement externe

Les privilèges d’emplacement externe s’appliquent à tous les répertoires imbriqués sous l’emplacement spécifié.

Par exemple, si vous avez accès à un emplacement externe défini avec l’URL abfss://container@storageAccount.dfs.core.windows.net/raw-data, les commandes suivantes sont valides :

COPY INTO landing_table
FROM 'abfss://container@storageAccount.dfs.core.windows.net/raw-data'
FILEFORMAT = PARQUET;

COPY INTO json_table
FROM 'abfss://container@storageAccount.dfs.core.windows.net/raw-data/json'
FILEFORMAT = JSON;

Les autorisations sur cet emplacement externe n’accordent aucun privilège sur les répertoires ci-dessus ou parallèles à l’emplacement spécifié. Par exemple, aucune des commandes suivantes n’est valide :

COPY INTO parent_table
FROM 's3://landing-bucket'
FILEFORMAT = PARQUET;

COPY INTO sibling_table
FROM 's3://landing-bucket/json-data'
FILEFORMAT = JSON;

Espace de noms à trois niveaux pour les tables cibles

Vous pouvez cibler une table Unity Catalog à l’aide d’un identificateur à trois niveaux (<catalog_name>.<database_name>.<table_name>). Vous pouvez utiliser les commandes USE CATALOG <catalog_name> et USE <database_name> pour définir le catalogue et la base de données par défaut pour votre requête ou notebook actuel.