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ègeREAD 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.