Ładowanie danych przy użyciu funkcji COPY INTO z woluminami wykazu aparatu Unity lub lokalizacjami zewnętrznymi
Dowiedz się, jak pozyskiwać COPY INTO
dane do tabel zarządzanych lub zewnętrznych w wykazie aparatu Unity z dowolnego formatu źródłowego i pliku obsługiwanego przez funkcję COPY INTO. Wykaz aparatu Unity dodaje nowe opcje konfigurowania bezpiecznego dostępu do danych pierwotnych. Do uzyskiwania dostępu do danych w magazynie obiektów w chmurze można użyć woluminów wykazu aparatu Unity lub lokalizacji zewnętrznych.
Usługa Databricks zaleca używanie woluminów do uzyskiwania dostępu do plików w magazynie w chmurze w ramach procesu pozyskiwania przy użyciu polecenia COPY INTO
. Aby uzyskać więcej informacji na temat zaleceń dotyczących używania woluminów i lokalizacji zewnętrznych, zobacz Artykuł Unity Catalog best practices (Najlepsze rozwiązania dotyczące wykazu aparatu Unity).
W tym artykule opisano sposób ładowania COPY INTO
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 wykazu aparatu Unity lub lokalizację zewnętrzną, aby uzyskać dostęp do plików źródłowych w usłudze ADLS Gen2. Jeśli administrator skonfigurował zasób obliczeniowy do używania jednostki usługi, zobacz Load data using COPY INTO with a service principal (Ładowanie danych przy użyciu jednostki usługi) lub Tutorial: COPY INTO with Spark SQL zamiast tego (Samouczek: COPY INTO z usługą Spark SQL ). Jeśli administrator udzielił Ci tymczasowych poświadczeń (tokenu SAS obiektu blob), wykonaj kroki opisane w temacie Ładowanie danych przy użyciu funkcji COPY INTO z tymczasowymi poświadczeniami .
Zanim rozpoczniesz
COPY INTO
Aby załadować dane z woluminu wykazu aparatu Unity lub ścieżki magazynu obiektów w chmurze zdefiniowanej jako lokalizacja zewnętrzna wykazu aparatu Unity, musisz mieć następujące elementy:
Uprawnienie
READ VOLUME
do woluminuREAD FILES
lub uprawnienia w lokalizacji zewnętrznej.Aby uzyskać więcej informacji na temat tworzenia woluminów, zobacz Co to są woluminy wykazu aparatu 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
.Uprawnienie
USE SCHEMA
do schematu zawierającego tabelę docelową.Uprawnienie
USE CATALOG
do katalogu nadrzędnego.
Aby uzyskać więcej informacji na temat uprawnień wykazu aparatu Unity, zobacz Uprawnienia wykazu aparatu Unity i zabezpieczane obiekty.
Ładowanie danych z woluminu
Aby załadować dane z woluminu wykazu aparatu Unity, musisz mieć READ VOLUME
uprawnienia. 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 przy użyciu lokalizacji zewnętrznych wykazu aparatu Unity w celu zapewnienia dostępu do kodu źródłowego.
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 przyznają żadnych uprawnień do katalogów powyżej ani równoległych do określonej 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
Tabelę wykazu aparatu Unity można określić przy użyciu identyfikatora trójwarstwowego (<catalog_name>.<database_name>.<table_name>
). Polecenia i USE <database_name>
umożliwiają USE CATALOG <catalog_name>
ustawienie domyślnego katalogu i bazy danych dla bieżącego zapytania lub notesu.