Ladda data genom COPY INTO med Unity Catalog-volymer eller externa platser

Den här artikeln beskriver hur du använder kommandot COPY INTO för att läsa in data från en Azure Data Lake Storage-container (ADLS) i ditt Azure-konto till en tabell i Databricks SQL.

Stegen i den här artikeln förutsätter att administratören har konfigurerat en Unity Catalog-volym eller en extern plats så att du kan komma åt dina källfiler i ADLS. Om administratören har konfigurerat en beräkningsresurs för att använda ett tjänsthuvudnamn, se Ladda data med COPY INTO med ett tjänsthuvudnamn eller Självstudie: COPY INTO med Spark SQL i stället. Om administratören gav dig tillfälliga autentiseringsuppgifter (en Blob SAS-token) följer du stegen i Läs in data med COPY INTO med tillfälliga autentiseringsuppgifter i stället.

Databricks rekommenderar att du använder volymer för att komma åt filer i molnlagring som en del av inmatningsprocessen med hjälp av COPY INTO. Mer information om rekommendationer för användning av volymer och externa platser finns i Metodtips för Unity Catalog.

Innan du börjar

Innan du använder COPY INTO för att läsa in data från en Unity Catalog-volym eller från en lagringssökväg för molnobjekt som definieras som en extern plats i Unity-katalogen måste du ha följande:

  • Behörigheten READ VOLUME på en volym eller behörigheten READ FILES på en extern plats. Mer information om hur du skapar volymer finns i Vad är Unity Catalog-volymer?. Mer information om hur du skapar externa platser finns i Översikt över externa platser.

  • Sökvägen till dina källdata i form av en lagrings-URL för molnobjekt eller en volymsökväg.

    Exempel på lagrings-URL för molnobjekt: abfss://container@storageAccount.dfs.core.windows.net/raw-data/json.

    Exempel på volymsökväg: /Volumes/quickstart_catalog/quickstart_schema/quickstart_volume/raw_data/json.

  • Behörigheten USE SCHEMA för schemat som innehåller måltabellen.

  • Behörigheten USE CATALOG för den överordnade katalogen.

Mer information om Behörigheter för Unity-katalog finns i Referens för Behörigheter för Unity-katalog.

Läsa in data från en volym

Om du vill läsa in data från en Unity Catalog-volym måste du ha behörigheten READ VOLUME . Volymbehörigheter gäller för alla kapslade kataloger under den angivna volymen.

Om du till exempel har åtkomst till en volym med sökvägen /Volumes/quickstart_catalog/quickstart_schema/quickstart_volume/är följande kommandon giltiga:

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;

Schemaprefixet dbfs: stöds också med volymsökvägar (till exempel dbfs:/Volumes/...), men Databricks rekommenderar att du använder sökvägsformatet /Volumes/ som visas ovan.

Läsa in data med hjälp av en extern källa

Note

Databricks rekommenderar att du använder volymer för att komma åt filer i molnlagring. Externa platser stöds men är inte den rekommenderade metoden. Se Hanterade och externa tabeller.

I följande exempel läses data från ADLS in i en tabell med externa platser i Unity Catalog för att ge åtkomst till källdata.

COPY INTO my_json_data
FROM 'abfss://container@storageAccount.dfs.core.windows.net/jsonData'
FILEFORMAT = JSON;

Arv av extern platsbehörighet

Behörigheter för extern plats gäller för alla kapslade kataloger under den angivna platsen.

Om du till exempel har åtkomst till en extern plats som definierats med URL:en abfss://container@storageAccount.dfs.core.windows.net/raw-dataär följande kommandon giltiga:

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;

Behörigheter på den här externa platsen beviljar inte några behörigheter för kataloger ovan eller parallellt med den angivna platsen. Inget av följande kommandon är till exempel giltigt:

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;

Namnområde på tre nivåer för måltabeller

Du kan rikta in dig på en Unity Catalog-tabell med hjälp av ett namnområde på tre nivåer (<catalog_name>.<schema_name>.<table_name>). Använd kommandona USE CATALOG <catalog_name> och USE SCHEMA <schema_name> för att ange standardkatalogen och schemat för din aktuella fråga eller notebook-fil.

Följande exempel laddar data från en volym in i en tabell med hjälp av ett tre-nivåns namnrymdsystem:

COPY INTO quickstart_catalog.quickstart_schema.landing_table
FROM '/Volumes/quickstart_catalog/quickstart_schema/quickstart_volume/raw_data'
FILEFORMAT = PARQUET;

Du kan också ange standardkatalogen och schemat först:

USE CATALOG quickstart_catalog;
USE SCHEMA quickstart_schema;

COPY INTO landing_table
FROM '/Volumes/quickstart_catalog/quickstart_schema/quickstart_volume/raw_data'
FILEFORMAT = PARQUET;