Tworzenie woluminów i praca z nimi

W tym artykule przedstawiono woluminy, które są obiektami wykazu aparatu Unity, które umożliwiają zarządzanie zestawami danych innych niż tabelaryczne. W tym artykule opisano również sposób tworzenia woluminów, zarządzania nimi i pracy z nimi.

Aby uzyskać szczegółowe informacje na temat przekazywania plików w woluminach i zarządzania nimi, zobacz Przekazywanie plików do woluminu wykazu aparatu Unity i operacje zarządzania plikami dla woluminów wykazu aparatu Unity.

Uwaga

Podczas pracy z woluminami należy użyć usługi SQL Warehouse lub klastra z uruchomionym środowiskiem Databricks Runtime 13.3 LTS lub nowszym, chyba że używasz interfejsów użytkownika usługi Azure Databricks, takich jak Eksplorator wykazu.

Co to są woluminy wykazu aparatu Unity?

Woluminy to obiekty wykazu aparatu Unity reprezentujące wolumin logiczny magazynu w lokalizacji magazynu obiektów w chmurze. Woluminy zapewniają możliwości uzyskiwania dostępu, przechowywania, zarządzania i organizowania plików. Podczas gdy tabele zapewniają nadzór nad tabelarycznymi zestawami danych, woluminy dodają nadzór nad zestawami danych innych niż tabelaryczne. Za pomocą woluminów można przechowywać pliki i uzyskiwać do nich dostęp w dowolnym formacie, w tym ustrukturyzowane, częściowo ustrukturyzowane i nieustrukturyzowane dane.

Ważne

Nie można używać woluminów jako lokalizacji dla tabel. Woluminy są przeznaczone tylko do dostępu do danych opartych na ścieżkach. Tabele służą do przechowywania danych tabelarycznych za pomocą wykazu aparatu Unity.

Co to jest wolumin zarządzany?

Wolumin zarządzany to wolumin magazynu zarządzany przez wykaz aparatu Unity utworzony w domyślnej lokalizacji magazynu zawierającego schemat. Woluminy zarządzane umożliwiają tworzenie zarządzanego magazynu do pracy z plikami bez obciążeń związanych z lokalizacjami zewnętrznymi i poświadczeniami magazynu. Nie trzeba określać lokalizacji podczas tworzenia woluminu zarządzanego, a cały dostęp do plików dla danych w woluminach zarządzanych odbywa się za pośrednictwem ścieżek zarządzanych przez wykaz aparatu Unity. Zobacz Jaka ścieżka jest używana do uzyskiwania dostępu do plików w woluminie?.

Po usunięciu woluminu zarządzanego pliki przechowywane w tym woluminie są również usuwane z dzierżawy chmury w ciągu 30 dni.

Co to jest wolumin zewnętrzny?

Wolumin zewnętrzny to wolumin magazynu zarządzany przez wykaz aparatu Unity zarejestrowany w katalogu w lokalizacji zewnętrznej przy użyciu poświadczeń magazynu zarządzanego przez wykaz aparatu Unity. Woluminy zewnętrzne umożliwiają dodawanie ładu danych wykazu aparatu Unity do istniejących katalogów magazynu obiektów w chmurze. Niektóre przypadki użycia woluminów zewnętrznych obejmują następujące elementy:

  • Dodawanie ładu do plików danych bez migracji.
  • Zarządzanie plikami utworzonymi przez inne systemy, które muszą być pozyskiwane lub uzyskiwane przez usługę Azure Databricks.
  • Zarządzanie danymi utworzonymi przez usługę Azure Databricks, które muszą być dostępne bezpośrednio z magazynu obiektów w chmurze przez inne systemy.

Woluminy zewnętrzne muszą być katalogami w lokalizacjach zewnętrznych podlegających poświadczeń magazynu wykazu aparatu Unity. Wykaz aparatu Unity nie zarządza cyklem życia ani układem plików w woluminach zewnętrznych. Po usunięciu woluminu zewnętrznego wykaz aparatu Unity nie usuwa danych bazowych.

Uwaga

Podczas definiowania woluminu dostęp identyfikatora URI chmury do danych w ramach ścieżki woluminu podlega uprawnieniam woluminu.

Jaka ścieżka jest używana do uzyskiwania dostępu do plików w woluminie?

Ścieżka dostępu do woluminów jest taka sama, jak w przypadku używania platformy Apache Spark, sql, języka Python lub innych języków i bibliotek. Różni się to od starszych wzorców dostępu dla plików w magazynie obiektów powiązanym z obszarem roboczym usługi Azure Databricks.

Ścieżka dostępu do plików w woluminach ma następujący format:

/Volumes/<catalog>/<schema>/<volume>/<path>/<file-name>

Usługa Azure Databricks obsługuje również opcjonalny dbfs:/ schemat podczas pracy z platformą Apache Spark, więc następująca ścieżka również działa:

dbfs:/Volumes/<catalog>/<schema>/<volume>/<path>/<file-name>

Sekwencja /<catalog>/<schema>/<volume> w ścieżce odpowiada trzema nazwami obiektów wykazu aparatu Unity skojarzonymi z plikiem. Te elementy ścieżki są tylko do odczytu i nie są bezpośrednio zapisywane przez użytkowników, co oznacza, że nie można tworzyć ani usuwać tych katalogów przy użyciu operacji systemu plików. Są one automatycznie zarządzane i synchronizowane z odpowiednimi jednostkami UC.

Uwaga

Dostęp do danych w woluminach zewnętrznych można również uzyskać przy użyciu identyfikatorów URI magazynu w chmurze.

Jakie są uprawnienia dla woluminów?

Woluminy używają tego samego podstawowego modelu uprawnień co tabele, ale gdzie uprawnienia dla tabel koncentrują się na udzielaniu dostępu do wykonywania zapytań i manipulowania wierszami w tabeli, uprawnienia dla woluminów koncentrują się na pracy z plikami. W związku z tym woluminy mają następujące uprawnienia:

Zobacz Uprawnienia wykazu aparatu Unity i zabezpieczane obiekty.

KtoTo może zarządzać uprawnieniami woluminu?

Aby zarządzać uprawnieniami woluminu lub porzucać woluminy, musisz mieć uprawnienia właściciela na woluminie. Każdy obiekt w wykazie aparatu Unity może mieć tylko jeden podmiot zabezpieczeń przypisany jako właściciel, a własność nie ma kaskadowej (czyli właściciel wykazu nie staje się automatycznie właścicielem wszystkich obiektów w tym wykazie), uprawnienia skojarzone z własnością mają zastosowanie do wszystkich obiektów zawartych w obiekcie.

Oznacza to, że w przypadku woluminów wykazu aparatu Unity następujące podmioty zabezpieczeń mogą zarządzać uprawnieniami woluminu:

  • Właściciel katalogu nadrzędnego.
  • Właściciel schematu nadrzędnego.
  • Właściciel woluminu.

Mimo że każdy obiekt może mieć tylko jednego właściciela, usługa Databricks zaleca przypisanie własności większości obiektów do grupy, a nie pojedynczego użytkownika. Początkowa własność dowolnego obiektu jest przypisywana do użytkownika, który tworzy ten obiekt. Zobacz Zarządzanie własnością obiektu wykazu aparatu Unity.

Tworzenie woluminu zarządzanego

Aby utworzyć wolumin zarządzany, musisz mieć następujące uprawnienia:

Zasób Wymagane uprawnienia
Schemat USE SCHEMA, CREATE VOLUME
Wykaz USE CATALOG

Sql

Aby utworzyć wolumin zarządzany, użyj następującej składni:

CREATE VOLUME <catalog>.<schema>.<volume-name>;

Eksplorator wykazu

Aby utworzyć wolumin zarządzany w Eksploratorze wykazu:

  1. W obszarze roboczym usługi Azure Databricks kliknij pozycję Ikona wykazuWykaz.
  2. Wyszukaj lub wyszukaj schemat, do którego chcesz dodać wolumin, i wybierz go.
  3. Kliknij przycisk Utwórz wolumin. (Musisz mieć wystarczające uprawnienia).
  4. Wprowadź nazwę woluminu.
  5. Podaj komentarz (opcjonalnie).
  6. Kliknij pozycję Utwórz.

Tworzenie woluminu zewnętrznego

Aby utworzyć wolumin zewnętrzny, musisz mieć następujące uprawnienia:

Zasób Wymagane uprawnienia
Lokalizacja zewnętrzna CREATE EXTERNAL VOLUME
Schemat USE SCHEMA, CREATE VOLUME
Wykaz USE CATALOG

Sql

Aby utworzyć wolumin zewnętrzny, określ ścieżkę w lokalizacji zewnętrznej przy użyciu następującej składni:

CREATE EXTERNAL VOLUME <catalog>.<schema>.<external-volume-name>
LOCATION 'abfss://<container-name>@<storage-account>.dfs.core.windows.net/<path>/<directory>';

Eksplorator wykazu

Aby utworzyć wolumin zewnętrzny w Eksploratorze wykazu:

  1. W obszarze roboczym usługi Azure Databricks kliknij pozycję Ikona wykazuWykaz.
  2. Wyszukaj lub wyszukaj schemat, do którego chcesz dodać wolumin, i wybierz go.
  3. Kliknij przycisk Utwórz wolumin. (Musisz mieć wystarczające uprawnienia).
  4. Wprowadź nazwę woluminu.
  5. Wybierz lokalizację zewnętrzną, w której chcesz utworzyć wolumin.
  6. Edytuj ścieżkę, aby odzwierciedlić podkatalog, w którym chcesz utworzyć wolumin.
  7. Podaj komentarz (opcjonalnie).
  8. Kliknij pozycję Utwórz.

Usuwanie woluminu

Tylko użytkownicy z uprawnieniami właściciela mogą usuwać wolumin. Zobacz KtoTo może zarządzać uprawnieniami woluminu?.

Użyj następującej składni, aby usunąć wolumin:

DROP VOLUME IF EXISTS <volume-name>;

Po usunięciu woluminu zarządzanego usługa Azure Databricks usunie bazowe dane w ciągu 30 dni. Usunięcie woluminu zewnętrznego spowoduje usunięcie woluminu z wykazu aparatu Unity, ale bazowe dane pozostają niezmienione w lokalizacji zewnętrznej.

Odczytywanie plików w woluminie

Aby wyświetlić zawartość woluminu lub plików dostępu przechowywanych na woluminach, musisz mieć następujące uprawnienia:

Zasób Wymagane uprawnienia
Objętość READ
Schemat USE SCHEMA
Wykaz USE CATALOG

Zawartość woluminów jest używana przy użyciu ścieżek. Zobacz Jaka ścieżka jest używana do uzyskiwania dostępu do plików w woluminie?.

Tworzenie, usuwanie i wykonywanie innych operacji zarządzania plikami na woluminie

Aby wykonywać operacje zarządzania plikami na plikach przechowywanych na woluminach, musisz mieć następujące uprawnienia:

Zasób Wymagane uprawnienia
Objętość READ, WRITE
Schemat USE SCHEMA
Wykaz USE CATALOG

Operacje zarządzania plikami można wykonywać na woluminach przy użyciu następujących narzędzi:

  • Eksplorator wykazu udostępnia wiele opcji interfejsu użytkownika dla zadań zarządzania plikami. Zobacz Co to jest Eksplorator wykazu?.
  • Polecenia narzędzi usługi fs Databricks. Zobacz Narzędzie systemu plików (dbutils.fs).
  • Polecenie %fs magic zapewnia takie same funkcje jak dbutils.fs.
  • Przekazywanie plików do interfejsu użytkownika woluminu. Zobacz Przekazywanie plików do woluminu wykazu aparatu Unity.
  • Polecenia typu open source, takie jak os.listdir().
  • Niektóre polecenia powłoki bash są obsługiwane. %sh cp jest obsługiwana, ale %sh mv nie jest.

Aby uzyskać szczegółowe informacje na temat programowej interakcji z plikami na woluminach, zobacz Praca z plikami w woluminach wykazu aparatu Unity.

Przykładowy notes: tworzenie woluminów i praca z nimi

W poniższym notesie przedstawiono podstawową składnię SQL umożliwiającą tworzenie woluminów wykazu aparatu Unity i interakcję z nimi.

Samouczek: notes woluminów wykazu aparatu Unity

Pobierz notes

Ścieżki zarezerwowane dla woluminów

Woluminy zawierają następujące ścieżki zarezerwowane używane do uzyskiwania dostępu do woluminów:

  • dbfs:/Volumes
  • /Volumes

Uwaga

Ścieżki są również zarezerwowane dla potencjalnych literówek dla tych ścieżek z interfejsów API platformy Apache Spark i dbutils, w tym /volumes, /Volume, , czy /volumesą one poprzedzone .dbfs:/ Ścieżka /dbfs/Volumes jest również zarezerwowana, ale nie może być używana do uzyskiwania dostępu do woluminów.

Woluminy są obsługiwane tylko w środowisku Databricks Runtime 13.3 LTS i nowszym. W środowisku Databricks Runtime 12.2 LTS i poniżej operacje względem /Volumes ścieżek mogą zakończyć się powodzeniem, ale mogą zapisywać dane na efemerycznych dyskach magazynu dołączonych do klastrów obliczeniowych, a nie utrwalać danych w woluminach wykazu aparatu Unity zgodnie z oczekiwaniami.

Ważne

Jeśli masz wstępnie istniejące dane przechowywane w ścieżce zarezerwowanej w katalogu głównym systemu plików DBFS, możesz utworzyć bilet pomocy technicznej, aby uzyskać tymczasowy dostęp do tych danych, aby przenieść je do innej lokalizacji.

Ograniczenia

Aby korzystać z woluminów wykazu aparatu Unity, należy użyć zasobów obliczeniowych z obsługą wykazu aparatu Unity. Woluminy nie obsługują wszystkich obciążeń.

Uwaga

Woluminy nie obsługują dbutils.fs poleceń dystrybuowanych do funkcji wykonawczych.

Obowiązują następujące ograniczenia:

W środowisku Databricks Runtime 14.3 LTS i nowszym:

  • W klastrach użytkowników z jednym użytkownikiem nie można uzyskać dostępu do woluminów z wątków i podprocesów w języku Scala.

W środowisku Databricks Runtime 14.2 i poniżej:

  • W przypadku zasobów obliczeniowych skonfigurowanych w trybie dostępu współdzielonego nie można uzyskać dostępu do woluminów przy użyciu funkcji zdefiniowanych przez użytkownika.
    • Zarówno język Python, jak i Scala mają dostęp do aplikacji FUSE ze sterownika, ale nie z funkcji wykonawczych.
    • Kod Scala, który wykonuje operacje we/wy, może być uruchamiany na sterowniku, ale nie na funkcjach wykonawczych.
  • W przypadku obliczeń skonfigurowanych w trybie dostępu pojedynczego użytkownika nie ma obsługi funkcji FUSE w języku Scala, kodu we/wy scala uzyskiwania dostępu do danych przy użyciu ścieżek woluminów lub funkcji UDF języka Scala. Funkcje zdefiniowane przez użytkownika w języku Python są obsługiwane w trybie dostępu pojedynczego użytkownika.

We wszystkich obsługiwanych wersjach środowiska Databricks Runtime:

  • Funkcje zdefiniowane przez użytkownika wykazu aparatu Unity nie obsługują uzyskiwania dostępu do ścieżek plików woluminu.

  • Nie można uzyskać dostępu do woluminów z RDD.

  • Nie można używać funkcji spark-submit z danymi JAR przechowywanymi w woluminie.

  • Nie można zdefiniować zależności do innych bibliotek, do których można uzyskać dostęp za pośrednictwem ścieżek woluminów wewnątrz pliku Wheel lub JAR.

  • Nie można wyświetlić listy obiektów wykazu aparatu Unity przy użyciu /Volumes/<catalog-name> wzorców lub /Volumes/<catalog-name>/<schema-name> . Należy użyć w pełni kwalifikowanej ścieżki zawierającej nazwę woluminu.

  • Punkt końcowy systemu plików DBFS dla interfejsu API REST nie obsługuje ścieżek woluminów.

  • Woluminy są wykluczone z globalnych wyników wyszukiwania w obszarze roboczym usługi Azure Databricks.

  • Nie można określić woluminów jako miejsca docelowego dostarczania dziennika klastra.

  • %sh mv program nie jest obsługiwany w przypadku przenoszenia plików między woluminami. Użyj polecenia dbutils.fs.mv lub %sh cp zamiast tego.

  • Nie można utworzyć niestandardowego systemu plików Hadoop z woluminami, co oznacza, że następujące nie są obsługiwane:

    import org.apache.hadoop.fs.Path
    val path =  new Path("dbfs:/Volumes/main/default/test-volume/file.txt")
    val fs = path.getFileSystem(sc.hadoopConfiguration)
    fs.listStatus(path)
    
  • Woluminy nie są dostępne w regionach ani obszarach roboczych platformy Azure Government ze zgodnością fedRAMP.

  • Musisz użyć formatu ścieżki ze schematem dbfs:/ w panelu konfiguracji biblioteki usługi Azure Data Factory. Na przykład dbfs:/Volumes/<catalog-name>/<schema-name>/<volume-name>/file.