Delen via


Gegevens laden met COPY INTO met Unity Catalog-volumes of externe locaties

Leer hoe COPY INTO u gegevens opneemt in beheerde of externe tabellen van Unity Catalog vanuit elke bron- en bestandsindeling die 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, raadpleegt u In plaats daarvan gegevens laden met BEHULP van COPY INTO met een service-principal 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 de READ 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.