Caricare i dati usando COPY INTO con volumi di Unity Catalog o posizioni esterne
Informazioni su come usare COPY INTO
per inserire dati in tabelle gestite o esterne di Unity Catalog da qualsiasi origine e formato di file supportato da COPY INTO. Unity Catalog aggiunge nuove opzioni per configurare l'accesso sicuro ai dati non elaborati. È possibile usare volumi del catalogo Unity o posizioni esterne per accedere ai dati nell'archiviazione di oggetti cloud.
Databricks consiglia di utilizzare volumi per accedere ai file nello storage cloud come parte del processo di ingestione utilizzando COPY INTO
. Per altre informazioni sulle raccomandazioni per l'uso di volumi e posizioni esterne, vedere procedure consigliate per il catalogo Unity.
Questo articolo descrive come usare il comando COPY INTO
per caricare dati da un contenitore Azure Data Lake Storage Gen2 (ADLS Gen2) nell'account Azure in una tabella in Databricks SQL.
I passaggi descritti in questo articolo presuppongono che l'amministratore abbia configurato un volume di Unity Catalog o un percorso esterno in modo da poter accedere ai file di origine in ADLS Gen2. Se l'amministratore ha configurato una risorsa di calcolo per l'uso di un'entità servizio, vedere Caricare i dati usando COPY INTO con un'entità servizio o Esercitazione: COPY INTO con Spark SQL. Se l'amministratore ti ha fornito credenziali temporanee (un token SAS Blob), segui i passaggi nella sezione Caricare i dati utilizzando COPY INTO con credenziali temporanee invece.
Operazioni preliminari
Prima di usare COPY INTO
per caricare i dati da un volume di Unity Catalog o da un percorso di archiviazione di oggetti cloud definito come posizione esterna del catalogo Unity, è necessario disporre degli elementi seguenti:
Privilegio
READ VOLUME
per un volume o ilREAD FILES
privilegio in una posizione esterna.Per altre informazioni sulla creazione di volumi, vedere Che cosa sono i volumi del catalogo Unity?.
Per altre informazioni sulla creazione di posizioni esterne, vedere Creare una posizione esterna per connettere l'archiviazione cloud ad Azure Databricks.
Percorso dei dati di origine sotto forma di URL di archiviazione di oggetti cloud o di un percorso del volume.
URL di archiviazione di oggetti cloud di esempio:
abfss://container@storageAccount.dfs.core.windows.net/raw-data/json
.Percorso del volume di esempio:
/Volumes/quickstart_catalog/quickstart_schema/quickstart_volume/raw_data/json
.Privilegio
USE SCHEMA
sullo schema che contiene la tabella di destinazione.Privilegio
USE CATALOG
sul catalogo principale.
Per ulteriori informazioni sui privilegi di Unity Catalog, vedere i privilegi di Unity Catalog e gli oggetti proteggibili.
Caricare dati da un volume
Per caricare dati da un volume di Unity Catalog, è necessario disporre del privilegio READ VOLUME
. I privilegi del volume si applicano a tutte le directory annidate nel volume specificato.
Ad esempio, se si ha accesso a un volume con il percorso /Volumes/quickstart_catalog/quickstart_schema/quickstart_volume/
, i comandi seguenti sono validi:
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;
Facoltativamente, è anche possibile usare un percorso del volume con lo schema dbfs. Ad esempio, anche i comandi seguenti sono validi:
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;
Caricare dati usando una posizione esterna
L'esempio seguente carica i dati da ADLS Gen2 in una tabella usando percorsi esterni di Unity Catalog per fornire l'accesso al codice sorgente.
COPY INTO my_json_data
FROM 'abfss://container@storageAccount.dfs.core.windows.net/jsonData'
FILEFORMAT = JSON;
Ereditarietà dei privilegi di posizione esterna
I privilegi di posizione esterna si applicano a tutte le directory annidate nella posizione specificata.
Ad esempio, se si ha accesso a un percorso esterno definito con l'URL abfss://container@storageAccount.dfs.core.windows.net/raw-data
, i comandi seguenti sono validi:
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;
Le autorizzazioni per questo percorso esterno non concedono privilegi nelle directory superiori o parallele a quella specificata. Ad esempio, nessuno dei comandi seguenti è valido:
COPY INTO parent_table
FROM 's3://landing-bucket'
FILEFORMAT = PARQUET;
COPY INTO sibling_table
FROM 's3://landing-bucket/json-data'
FILEFORMAT = JSON;
Spazio dei nomi a tre livelli per le tabelle di destinazione
È possibile specificare come destinazione una tabella del catalogo Unity usando un identificatore di tre livelli (<catalog_name>.<database_name>.<table_name>
). È possibile usare i comandi USE CATALOG <catalog_name>
e USE <database_name>
per impostare il catalogo e il database predefiniti per la query o il notebook corrente.