Caricare dati usando COPY INTO con volumi del catalogo Unity 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 usare volumi per accedere ai file nell'archiviazione cloud come parte del processo di inserimento usando 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 COPY INTO
comando per caricare dati da un contenitore di 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 ha fornito credenziali temporanee (un token di firma di accesso condiviso BLOB), seguire la procedura descritta in Caricare i dati usando COPY INTO con credenziali temporanee .
Operazioni preliminari
Prima di usare COPY INTO
per caricare i dati da un volume del catalogo Unity 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 di 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
per lo schema che contiene la tabella di destinazione.Privilegio
USE CATALOG
nel catalogo padre.
Per altre informazioni sui privilegi del catalogo Unity, vedere Privilegi del catalogo Unity e oggetti a protezione diretta.
Caricare dati da un volume
Per caricare i dati da un volume di Unity Catalog, è necessario avere il READ VOLUME
privilegio . 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 sulle directory precedenti o parallele alla posizione 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 USE CATALOG <catalog_name>
comandi e USE <database_name>
per impostare il catalogo e il database predefiniti per la query o il notebook corrente.