Aller au contenu principal

Chargez les données en utilisant COPY INTO avec des informations d’identification temporaires

Si votre cluster Databricks ou votre SQL Warehouse n'a pas les autorisations nécessaires pour lire vos fichiers source, vous pouvez utiliser des informations d'identification temporaires pour accéder aux données du stockage d'objets cloud externe et charger des fichiers dans une table Delta Lake.

Selon la manière dont votre organisation gère la sécurité de votre cloud, vous pourriez avoir besoin de demander à un administrateur cloud ou à un utilisateur avancé de vous fournir des informations d'identification. Pour plus d’informations, consultez Générer des informations d’identification temporaires pour l’ingestion.

Spécification des identifiants temporaires ou des options de chiffrement pour accéder aux données

remarque

Les options d'authentification et de chiffrement sont disponibles dans Databricks Runtime 10.4 LTS et versions ultérieures.

COPY INTO prend en charge :

  • Jetons SAS Azure pour lire les données d'ADLS et du stockage Azure Blob. Les jetons temporaires du stockage Azure Blob sont au niveau du conteneur, tandis que les jetons ADLS peuvent être au niveau du répertoire en plus du niveau du conteneur. Databricks recommande d'utiliser des jetons SAS au niveau du répertoire lorsque cela est possible. Le jeton SAS doit avoir les autorisations "Read" et "List".
  • Jetons STS AWS pour lire les données depuis AWS S3. Vos jetons doivent avoir le "s3*", "s3« », et « s3 »« autorisations ».
attention

Pour éviter l'utilisation abusive ou l'exposition des informations d'identification temporaires, Databricks vous recommande de définir des horizons d'expiration juste assez longs pour accomplir la tâche.

COPY INTO prend en charge le chargement de données chiffrées depuis AWS S3. Pour charger des données chiffrées, fournissez le type de chiffrement et la clé pour déchiffrer les données.

Charger les données à l'aide d'identifiants temporaires

L'exemple suivant charge des données depuis S3 et ADLS en utilisant des identifiants temporaires pour fournir l'accès aux données source.

SQL
COPY INTO my_json_data
FROM 's3://my-bucket/jsonData' WITH (
CREDENTIAL (AWS_ACCESS_KEY = '...', AWS_SECRET_KEY = '...', AWS_SESSION_TOKEN = '...')
)
FILEFORMAT = JSON

COPY INTO my_json_data
FROM 'abfss://container@storageAccount.dfs.core.windows.net/jsonData' WITH (
CREDENTIAL (AZURE_SAS_TOKEN = '...')
)
FILEFORMAT = JSON

Charger les données chiffrées

À l'aide de clés de chiffrement fournies par le client, l'exemple suivant charge des données depuis S3.

SQL
COPY INTO my_json_data
FROM 's3://my-bucket/jsonData' WITH (
ENCRYPTION (TYPE = 'AWS_SSE_C', MASTER_KEY = '...')
)
FILEFORMAT = JSON

Charger des données JSON à l'aide d'identifiants pour la source et la cible

L'exemple suivant charge des données JSON à partir d'un fichier sur AWS S3 dans la table Delta externe appelée my_json_data. Cette table doit être créée avant que COPY INTO ne puisse être exécuté. La commande utilise un identifiant existant pour écrire dans une table Delta externe et un autre pour lire à partir de l'emplacement S3.

SQL
COPY INTO my_json_data WITH (CREDENTIAL target_credential)
FROM 's3://my-bucket/jsonData' WITH (CREDENTIAL source_credential)
FILEFORMAT = JSON
FILES = ('f.json')