Udostępnij za pośrednictwem


Ładuj dane za pomocą COPY INTO z woluminów Unity Catalog lub lokalizacji zewnętrznych

Dowiedz się, jak używać COPY INTO do wprowadzania danych do zarządzanych przez katalog Unity tabel lub tabel zewnętrznych z dowolnego źródła i formatu pliku obsługiwanego przez COPY INTO. Unity Catalog dodaje nowe opcje konfigurowania bezpiecznego dostępu do surowych danych. Aby uzyskać dostęp do danych w magazynie obiektowym w chmurze, można użyć woluminów katalogu Unity lub lokalizacji zewnętrznych.

Usługa Databricks zaleca używanie woluminów do uzyskiwania dostępu do plików w przechowywaniu w chmurze w ramach procesu dostosowywania przy użyciu COPY INTO. Aby uzyskać więcej informacji na temat zaleceń dotyczących używania woluminów i lokalizacji zewnętrznych, zobacz najlepsze praktyki katalogu Unity.

W tym artykule opisano sposób użycia polecenia COPY INTO w celu załadowania danych z kontenera usługi Azure Data Lake Storage Gen2 (ADLS Gen2) na koncie platformy Azure do tabeli w usłudze Databricks SQL.

W krokach opisanych w tym artykule przyjęto założenie, że administrator skonfigurował wolumin katalogu Unity lub lokalizację zewnętrzną, aby uzyskać dostęp do plików źródłowych w ADLS Gen2. Jeśli administrator skonfigurował zasób obliczeniowy do używania jednostki usługi, zobacz Ładowanie danych przy użyciu COPY INTO z jednostką usługi lub Samouczek: COPY INTO z usługą Spark SQL. Jeśli administrator udzielił Ci tymczasowych poświadczeń (tokenu SAS obiektu blob), wykonaj kroki opisane w Ładowanie danych przy użyciu COPY INTO z poświadczeniami tymczasowymi.

Zanim rozpoczniesz

Przed użyciem COPY INTO do ładowania danych z wolumenu katalogu Unity lub ze ścieżki magazynu obiektów w chmurze zdefiniowanej jako zewnętrzna lokalizacja katalogu Unity, musisz dysponować następującymi elementami:

  • Uprawnienie READ VOLUME do woluminu READ FILES lub uprawnienia w lokalizacji zewnętrznej.

    Aby uzyskać więcej informacji na temat tworzenia woluminów, zobacz w Co to są woluminy katalogu Unity?.

    Aby uzyskać więcej informacji na temat tworzenia lokalizacji zewnętrznych, zobacz Tworzenie lokalizacji zewnętrznej w celu połączenia magazynu w chmurze z usługą Azure Databricks.

  • Ścieżka do danych źródłowych w postaci adresu URL magazynu obiektów w chmurze lub ścieżki woluminu.

    Przykładowy adres URL magazynu obiektów w chmurze: abfss://container@storageAccount.dfs.core.windows.net/raw-data/json.

    Przykładowa ścieżka woluminu: /Volumes/quickstart_catalog/quickstart_schema/quickstart_volume/raw_data/json.

  • Przywilej USE SCHEMA w schemacie zawierającym tabelę docelową.

  • Uprawnienie USE CATALOG w katalogu głównym.

Aby uzyskać więcej informacji na temat uprawnień w Unity Catalog, zobacz uprawnienia Unity Catalog i zabezpieczane obiekty.

Ładowanie danych z woluminu

Aby załadować dane z woluminu Unity Catalog, musisz mieć uprawnienia READ VOLUME. Uprawnienia woluminu mają zastosowanie do wszystkich katalogów zagnieżdżonych w ramach określonego woluminu.

Jeśli na przykład masz dostęp do woluminu ze ścieżką /Volumes/quickstart_catalog/quickstart_schema/quickstart_volume/, następujące polecenia są prawidłowe:

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;

Opcjonalnie możesz również użyć ścieżki woluminu ze schematem dbfs. Na przykład następujące polecenia są również prawidłowe:

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;

Ładowanie danych przy użyciu lokalizacji zewnętrznej

Poniższy przykład ładuje dane z usługi ADLS Gen2 do tabeli, korzystając z zewnętrznych lokalizacji katalogu Unity w celu zapewnienia dostępu do źródła danych.

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

Dziedziczenie uprawnień lokalizacji zewnętrznej

Uprawnienia lokalizacji zewnętrznej mają zastosowanie do wszystkich katalogów zagnieżdżonych w określonej lokalizacji.

Jeśli na przykład masz dostęp do lokalizacji zewnętrznej zdefiniowanej przy użyciu adresu URL abfss://container@storageAccount.dfs.core.windows.net/raw-data, następujące polecenia są prawidłowe:

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;

Uprawnienia do tej lokalizacji zewnętrznej nie zapewniają żadnych przywilejów na katalogi powyżej lub równoległe do wskazanej lokalizacji. Na przykład żadna z następujących poleceń nie jest prawidłowa:

COPY INTO parent_table
FROM 's3://landing-bucket'
FILEFORMAT = PARQUET;

COPY INTO sibling_table
FROM 's3://landing-bucket/json-data'
FILEFORMAT = JSON;

Trzy-poziomowa przestrzeń nazw dla tabel docelowych

Można wybrać tabelę katalogu Unity, używając identyfikatora trójwarstwowego (<catalog_name>.<database_name>.<table_name>). Możesz użyć poleceń USE CATALOG <catalog_name> i USE <database_name>, aby ustawić domyślny wykaz i bazę danych dla bieżącego zapytania lub notesu.