Caricare dati usando COPY INTO con credenziali temporanee

Se il cluster Azure Databricks o SQL Warehouse non dispone delle autorizzazioni per leggere i file di origine, è possibile usare le credenziali temporanee per accedere ai dati dall'archiviazione di oggetti cloud esterni e caricare i file in una tabella Delta Lake.

A seconda del modo in cui l'organizzazione gestisce la sicurezza cloud, potrebbe essere necessario chiedere a un amministratore cloud o a un utente con privilegi di fornire le credenziali. Per altre informazioni, vedere Generare credenziali temporanee per l'inserimento.

Specifica delle credenziali temporanee o delle opzioni di crittografia per accedere ai dati

Nota

Le opzioni di credenziali e crittografia sono disponibili in Databricks Runtime 10.4 LTS e versioni successive.

Supporti COPY INTO:

  • Token di firma di accesso condiviso di Azure per leggere i dati da ADLS Gen2 e Archiviazione BLOB di Azure. Archiviazione BLOB di Azure token temporanei sono a livello di contenitore, mentre i token ADLS Gen2 possono essere a livello di directory oltre al livello del contenitore. Databricks consiglia di usare i token di firma di accesso condiviso a livello di directory, quando possibile. Il token di firma di accesso condiviso deve disporre delle autorizzazioni "Lettura", "Elenco" e "Autorizzazioni".
  • Token del servizio token di sicurezza AWS per leggere i dati da AWS S3. I token devono avere le autorizzazioni "s3:GetObject*", "s3:ListBucket" e "s3:GetBucketLocation".

Avviso

Per evitare un uso improprio o l'esposizione delle credenziali temporanee, Databricks consiglia di impostare gli orizzonti di scadenza che sono abbastanza lunghi per completare l'attività.

COPY INTO supporta il caricamento di dati crittografati da AWS S3. Per caricare i dati crittografati, specificare il tipo di crittografia e la chiave per decrittografare i dati.

Caricare dati usando credenziali temporanee

L'esempio seguente carica i dati da S3 e ADLS Gen2 usando credenziali temporanee per fornire l'accesso ai dati di origine.

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

Caricare dati crittografati

Usando le chiavi di crittografia fornite dal cliente, l'esempio seguente carica i dati da S3.

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

Caricare dati JSON usando le credenziali per l'origine e la destinazione

L'esempio seguente carica i dati JSON da un file in Azure nella tabella Delta esterna denominata my_json_data. Questa tabella deve essere creata prima di COPY INTO poter essere eseguita. Il comando usa una credenziale esistente per scrivere nella tabella Delta esterna e un'altra per leggere dal percorso ABFSS.

COPY INTO my_json_data WITH (CREDENTIAL target_credential)
  FROM 'abfss://container@storageAccount.dfs.core.windows.net/base/path' WITH (CREDENTIAL source_credential)
  FILEFORMAT = JSON
  FILES = ('f.json')