Gegevens laden met behulp van COPY INTO via Unity Catalog-volumes of externe locaties
Leer hoe je COPY INTO
gebruikt om gegevens in te voeren in beheerde of externe tabellen van Unity Catalog van elke bron en bestandsformaat dat wordt ondersteund door COPY INTO. Unity Catalog voegt nieuwe opties toe voor het configureren van beveiligde toegang tot onbewerkte gegevens. U kunt Unity Catalog-volumes of externe locaties gebruiken om toegang te krijgen tot gegevens in de opslag van cloudobjecten.
Databricks raadt het gebruik van volumes aan om toegang te krijgen tot bestanden in cloudopslag als onderdeel van het opnameproces met behulp van COPY INTO
. Zie best practices voor Unity Catalog voor meer informatie over aanbevelingen voor het gebruik van volumes en externe locaties.
In dit artikel wordt beschreven hoe u de COPY INTO
opdracht gebruikt om gegevens te laden uit een Azure Data Lake Storage Gen2-container (ADLS Gen2) in uw Azure-account in een tabel in Databricks SQL.
In de stappen in dit artikel wordt ervan uitgegaan dat uw beheerder een Unity Catalog-volume of externe locatie heeft geconfigureerd, zodat u toegang hebt tot uw bronbestanden in ADLS Gen2. Als uw beheerder een rekenresource heeft geconfigureerd voor het gebruik van een service-principal, raadpleeg dan in plaats daarvan Gegevens laden met een service-principal COPY INTO of Zelfstudie: COPY INTO met Spark SQL. Als uw beheerder u tijdelijke referenties (een Blob SAS-token) heeft gegeven, volgt u de stappen in Gegevens laden met behulp van COPY INTO met tijdelijke referenties.
Voordat u begint
Voordat u COPY INTO
gegevens laadt vanaf een Unity Catalog-volume of vanuit een opslagpad voor cloudobjecten dat is gedefinieerd als een externe locatie voor Unity Catalog, moet u het volgende hebben:
De
READ VOLUME
bevoegdheid op een volume of deREAD FILES
bevoegdheid op een externe locatie.Zie Wat zijn Unity Catalog-volumes? voor meer informatie over het maken van volumes.
Zie Een externe locatie maken om cloudopslag te verbinden met Azure Databricks voor meer informatie over het maken van externe locaties.
Het pad naar de brongegevens in de vorm van een OPSLAG-URL voor cloudobjecten of een volumepad.
Voorbeeld van opslag-URL voor cloudobjecten:
abfss://container@storageAccount.dfs.core.windows.net/raw-data/json
.Voorbeeld van volumepad:
/Volumes/quickstart_catalog/quickstart_schema/quickstart_volume/raw_data/json
.De
USE SCHEMA
bevoegdheid voor het schema dat de doeltabel bevat.De
USE CATALOG
bevoegdheid voor de bovenliggende catalogus.
Zie Unity Catalog-bevoegdheden en beveiligbare objecten voor meer informatie over Unity Catalog-bevoegdheden.
Gegevens laden van een volume
Als u gegevens van een Unity Catalog-volume wilt laden, moet u over de READ VOLUME
bevoegdheid beschikken. Volumebevoegdheden zijn van toepassing op alle geneste mappen onder het opgegeven volume.
Als u bijvoorbeeld toegang hebt tot een volume met het pad /Volumes/quickstart_catalog/quickstart_schema/quickstart_volume/
, zijn de volgende opdrachten geldig:
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;
U kunt eventueel ook een volumepad gebruiken met het dbfs-schema. De volgende opdrachten zijn bijvoorbeeld ook geldig:
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;
Gegevens laden met behulp van een externe locatie
In het volgende voorbeeld worden gegevens uit ADLS Gen2 in een tabel geladen met behulp van externe locaties van Unity Catalog om toegang te bieden tot de broncode.
COPY INTO my_json_data
FROM 'abfss://container@storageAccount.dfs.core.windows.net/jsonData'
FILEFORMAT = JSON;
Overname van externe locatiebevoegdheden
Bevoegdheden voor externe locaties zijn van toepassing op alle geneste mappen onder de opgegeven locatie.
Als u bijvoorbeeld toegang hebt tot een externe locatie die is gedefinieerd met de URL abfss://container@storageAccount.dfs.core.windows.net/raw-data
, zijn de volgende opdrachten geldig:
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;
Machtigingen voor deze externe locatie verlenen geen bevoegdheden voor mappen boven of parallel aan de opgegeven locatie. Zo zijn geen van de volgende opdrachten geldig:
COPY INTO parent_table
FROM 's3://landing-bucket'
FILEFORMAT = PARQUET;
COPY INTO sibling_table
FROM 's3://landing-bucket/json-data'
FILEFORMAT = JSON;
Naamruimte op drie niveaus voor doeltabellen
U kunt zich richten op een Unity Catalog-tabel met behulp van een id met drie lagen (<catalog_name>.<database_name>.<table_name>
). U kunt de USE CATALOG <catalog_name>
en USE <database_name>
opdrachten gebruiken om de standaardcatalogus en database in te stellen voor uw huidige query of notebook.