Partager via


Charger des données à l’aide de COPY INTO volumes du catalogue Unity ou d’emplacements externes

Découvrez comment 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 COPY INTO commande pour charger des données à partir d’un conteneur Azure Data Lake Storage (ADLS) dans votre compte Azure dans une table dans Databricks SQL.

Les étapes décrites dans cet article supposent que votre administrateur a configuré un volume de catalogue Unity ou un emplacement externe afin de pouvoir accéder à vos fichiers sources dans ADLS. Si votre administrateur a configuré une ressource de calcul pour utiliser un principal de service, consultez Charger des données à l’aide COPY INTO d’un principal de service ou tutoriel : COPY INTO avec Spark SQL à la place. Si votre administrateur vous a donné des identifiants temporaires (jeton SAS d’objet blob), suivez les étapes de chargement des données avec COPY INTO des identifiants temporaires à la place.

Avant de commencer

Avant de COPY INTO charger des données à partir d’un volume de catalogue Unity ou d’un chemin de stockage d’objets cloud défini comme emplacement externe du catalogue Unity, 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 Vue d’ensemble des emplacements externes.

  • 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 les données d’ADLS dans une table à l’aide d’emplacements externes du catalogue Unity pour fournir l’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.