Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Questo articolo descrive come usare il comando COPY INTO per caricare dati da un contenitore di Azure Data Lake Storage (ADLS) 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. Se l'amministratore ha configurato una risorsa di calcolo per l'uso di un service principal, vedere Caricare dati utilizzando COPY INTO con un service principal 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.
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.
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 VOLUMEsu un volume o privilegioREAD FILESsu 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 percorsi esterni, vedere Panoramica delle posizioni esterne.Percorso dei dati di origine sotto forma di URL di archiviazione di oggetti cloud o di un percorso di un 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 SCHEMAsullo schema che contiene la tabella di destinazione.Privilegio
USE CATALOGsul catalogo principale.
Per ulteriori informazioni sui privilegi di Unity Catalog, vedere il riferimento ai privilegi di Unity Catalog.
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;
Il dbfs: prefisso dello schema è supportato anche con i percorsi del volume, ad esempio dbfs:/Volumes/..., ma Databricks consiglia di usare il formato di percorso /Volumes/ mostrato sopra.
Caricare dati usando una posizione esterna
Note
Databricks consiglia di usare volumi per accedere ai file nell'archiviazione cloud. Le posizioni esterne sono supportate, ma non sono il metodo consigliato. Vedere Tabelle gestite ed esterne.
L'esempio seguente carica i dati da ADLS in una tabella usando percorsi esterni di Unity Catalog per fornire l'accesso ai dati di origine.
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 'abfss://container@storageAccount.dfs.core.windows.net'
FILEFORMAT = PARQUET;
COPY INTO sibling_table
FROM 'abfss://container@storageAccount.dfs.core.windows.net/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 uno spazio dei nomi a tre livelli (<catalog_name>.<schema_name>.<table_name>). Usare i comandi USE CATALOG <catalog_name> e USE SCHEMA <schema_name> per impostare il catalogo e lo schema predefiniti per la query o il notebook corrente.
L'esempio seguente carica i dati da un volume in una tabella usando lo spazio dei nomi a tre livelli:
COPY INTO quickstart_catalog.quickstart_schema.landing_table
FROM '/Volumes/quickstart_catalog/quickstart_schema/quickstart_volume/raw_data'
FILEFORMAT = PARQUET;
È anche possibile impostare innanzitutto il catalogo e lo schema predefiniti:
USE CATALOG quickstart_catalog;
USE SCHEMA quickstart_schema;
COPY INTO landing_table
FROM '/Volumes/quickstart_catalog/quickstart_schema/quickstart_volume/raw_data'
FILEFORMAT = PARQUET;