Dela via


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

Lär dig hur du använder COPY INTO för att mata in data till hanterade eller externa Unity Catalog-tabeller från alla käll- och filformat som stöds av COPY INTO. Unity Catalog lägger till nya alternativ för att konfigurera säker åtkomst till rådata. Du kan använda Unity Catalog-volymer eller externa platser för att komma åt data i molnobjektlagring.

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.

Den här artikeln beskriver hur du använder COPY INTO kommandot för att läsa in data från en Azure Data Lake Storage Gen2-container (ADLS Gen2) 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 källfilerna i ADLS Gen2. 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.

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 Skapa en extern plats för att ansluta molnlagring till Azure Databricks.

  • 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 Behörigheter för Unity-katalog och skyddsbara objekt.

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;

Du kan också använda en volymsökväg med dbfs-schemat. Följande kommandon är till exempel också giltiga:

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;

Läsa in data med hjälp av en extern plats

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

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 's3://landing-bucket'
FILEFORMAT = PARQUET;

COPY INTO sibling_table
FROM 's3://landing-bucket/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 en identifierare på tre nivåer (<catalog_name>.<database_name>.<table_name>). Du kan använda kommandona USE CATALOG <catalog_name> och USE <database_name> för att ange standardkatalogen och databasen för din aktuella fråga eller notebook-fil.