Udostępnij przez


Czym są woluminy katalogu Unity?

Woluminy to obiekty Unity Catalog, które umożliwiają zarządzanie zestawami danych innych niż tabelaryczne. Woluminy reprezentują logiczną woluminę magazynową w usłudze magazynowania obiektów w chmurze. Woluminy zapewniają możliwości uzyskiwania dostępu, przechowywania, zarządzania i organizowania plików.

Podczas gdy tabele zarządzają danymi tabelarycznymi, woluminy zarządzają danymi nie tabelarycznymi dowolnego formatu, w tym ustrukturyzowane, częściowo ustrukturyzowane lub nieustrukturyzowane.

Usługa Databricks zaleca używanie woluminów do zarządzania dostępem do wszystkich danych innych niż tabelaryczne. Woluminy są dostępne w dwóch typach:

  • Woluminy zarządzane: W przypadku prostego magazynu zarządzanego przez usługę Databricks.
  • Woluminy zewnętrzne: Aby dodać ład do istniejących lokalizacji przechowywania obiektów w chmurze.

Przypadki użycia woluminów

Przypadki użycia woluminów obejmują:

  • Zarejestruj obszary docelowe dla danych pierwotnych generowanych przez systemy zewnętrzne, aby obsługiwać przetwarzanie na wczesnym etapie potoków ETL i innych działań inżynieryjnych.
  • Zarejestruj lokalizacje przejściowe na potrzeby pozyskiwania. Na przykład przy użyciu instrukcji Auto Loader, COPY INTOlub CTAS (CREATE TABLE AS).
  • Udostępniaj lokalizacje przechowywania plików dla analityków danych, analityków danych i inżynierów uczenia maszynowego do użycia jako części eksploracyjnej analizy danych i innych zadań związanych z nauką o danych.
  • Zapewnij użytkownikom usługi Azure Databricks dostęp do dowolnych plików utworzonych i zdeponowanych w magazynie w chmurze przez inne systemy. Na przykład duże kolekcje danych nieustrukturyzowanych (takich jak obrazy, audio, wideo i pliki PDF) przechwycone przez systemy nadzoru lub urządzenia IoT lub pliki bibliotek (pliki JARs i pliki koła języka Python) wyeksportowane z lokalnych systemów zarządzania zależnościami lub potoków ciągłej integracji/ciągłego wdrażania.
  • Przechowywanie danych operacyjnych, takich jak pliki rejestrowania lub tworzenia punktów kontrolnych.

Aby zapoznać się z pokazem pracy z woluminami, zobacz Upraszczanie pobierania plików, obrazów i danych przy użyciu woluminów wykazu aparatu Unity.

Important

Nie można rejestrować plików w woluminach jako tabel w wykazie aparatu Unity. Woluminy są przeznaczone wyłącznie do dostępu do danych opartych na ścieżkach. Użyj tabel, gdy chcesz pracować z danymi tabelarycznymi w Unity Catalog.

Zarządzane i zewnętrzne woluminy

Woluminy zarządzane i zewnętrzne zapewniają niemal identyczne środowiska podczas korzystania z narzędzi, interfejsów użytkownika i interfejsów API usługi Azure Databricks. Główne różnice dotyczą lokalizacji magazynu, cyklu życia i kontroli:

Funkcja Woluminy zarządzane Woluminy zewnętrzne
Lokalizacja usługi Storage Utworzono wewnątrz magazynu zarządzanego przez użytkownika dla schematu Zarejestrowane względem istniejącej ścieżki magazynu obiektów w chmurze
Cykl życia danych Kontrola użytkownika zarządza układem i usuwaniem (7-dniowe przechowywanie po usunięciu) Dane pozostają w magazynie w chmurze po usunięciu woluminu
Kontrola dostępu Cały dostęp przechodzi przez interfejs użytkownika Kontrola interfejsu użytkownika zarządza dostępem, ale narzędzia zewnętrzne mogą używać bezpośrednich identyfikatorów URI
Wymagana migracja? Nie. Nie — użyj istniejących ścieżek magazynu as-is
Typowy przypadek użycia Najprostsza opcja dla obciążeń tylko usługi Databricks Mieszany dostęp do usługi Databricks i systemu zewnętrznego

Dlaczego warto używać woluminów zarządzanych?

Woluminy zarządzane mają następujące korzyści:

  • Domyślny wybór obciążeń usługi Databricks.
  • Nie trzeba ręcznie zarządzać poświadczeniami w chmurze ani ścieżkami magazynu.
  • Najprostsza opcja szybkiego tworzenia zarządzanych lokalizacji przechowywania.

Dlaczego warto używać woluminów zewnętrznych?

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, w którym już znajdują się dane, bez konieczności kopiowania danych.
  • 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.

Usługa Databricks zaleca używanie woluminów zewnętrznych do przechowywania plików danych innych niż tabelaryczne, które są odczytywane lub zapisywane przez systemy zewnętrzne oprócz usługi Azure Databricks. Katalog aparatu Unity nie zarządza odczytami i zapisami wykonywanymi bezpośrednio względem magazynu obiektów w chmurze z systemów zewnętrznych, dlatego należy skonfigurować dodatkowe zasady i poświadczenia na koncie w chmurze, aby zasady ładu danych były przestrzegane poza usługą Azure Databricks.

Ścieżka dostępu do plików w woluminie

Woluminy znajdują się na trzecim poziomie trójpoziomowej przestrzeni nazw katalogu Unity (catalog.schema.volume):

Diagram modelu obiektów Unity Catalog, skoncentrowany na zbiorach

Ś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 wolumenach 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>

Część /<catalog>/<schema>/<volume> ścieżki mapuje na trzy nazwy obiektów wykazu aparatu Unity dla pliku. Te katalogi są automatycznie zarządzane tylko do odczytu i zarządzane przez wykaz aparatu Unity. Nie można ich tworzyć ani usuwać za pomocą poleceń systemu plików.

Note

Można również uzyskać dostęp do danych na woluminach zewnętrznych, używając URI do przechowywania w chmurze.

Ś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

Note

Ścieżki są również zarezerwowane dla potencjalnych literówek w przypadku tych ścieżek z interfejsów API platformy Apache Spark i dbutils, w tym /volumes, /Volume, /volume, niezależnie od tego, czy są poprzedzone przez 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 Databricks Runtime 12.2 LTS i wcześniejszych wersjach operacje na ścieżkach /Volumes mogą zakończyć się powodzeniem, ale mogą zapisywać dane tylko na dyskach tymczasowego przechowywania dołączonych do klastrów obliczeniowych, zamiast zachowywać dane w woluminach Unity Catalog zgodnie z oczekiwaniami.

Important

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

Wymagania dotyczące obliczeń

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.

Limitations

Aby korzystać z woluminów Unity Catalog, należy użyć zasobów obliczeniowych z obsługą Unity Catalog.

W poniższej tabeli przedstawiono ograniczenia danych katalogu Unity w zależności od wersji Databricks Runtime.

Wersja środowiska uruchomieniowego usługi Databricks Limitations
Wszystkie obsługiwane wersje środowiska Databricks Runtime
  • Woluminy nie obsługują dbutils.fs poleceń dystrybuowanych do funkcji wykonawczych.
  • 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żyć starszego zadania spark-submit z regułami JAR przechowywanymi w woluminie. Zamiast tego użyj zadania JAR. Zobacz Zadanie JAR dla prac.
  • Nie można zdefiniować zależności do innych bibliotek, do których uzyskiwano dostęp za pośrednictwem ścieżek woluminów wewnątrz koła lub pliku 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 w formacie Volumes/<catalog-name>/<schema-name>/<volume-name>. Na przykład dbutils.fs.ls("/Volumes/MyCatalog/MySchema/MyVolume")
  • %sh mv nie jest obsługiwane do 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. Na przykład użycie polecenia new Path("dbfs:/Volumes/main/default/test-volume/file.txt") do utworzenia org.apache.hadoop.fs.path obiektu nie będzie działać.
  • Woluminy nie są dostępne w regionach ani obszarach roboczych platformy Azure Government zgodnych z FedRAMP.
  • Musisz użyć formatu ścieżki ze schematem dbfs:/ w panelu konfiguracji biblioteki Azure Data Factory, na przykład dbfs:/Volumes/<catalog-name>/<schema-name>/<volume-name>/file.
14.3 LTS i nowsze
  • W przypadku obliczeń z dedykowanym trybem dostępu (dawniej trybem dostępu pojedynczego użytkownika) nie można uzyskać dostępu do woluminów z wątków i podprocesów w języku Scala.
14.2 i poniżej
  • W przypadku komputerów skonfigurowanych w standardowym trybie dostępu (dawniej współdzielonym), nie można używać funkcji zdefiniowanych przez użytkownika do uzyskiwania dostępu do woluminów.
    • Zarówno Python, jak i Scala mają dostęp do FUSE ze sterownika, ale nie z egzekutorów.
    • 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 dedykowanego dostępu nie ma obsługi FUSE w Scala, kodu wejścia/wyjścia w Scala uzyskującego dostęp do danych za pomocą ścieżek woluminów lub Scala UDF. Funkcje zdefiniowane przez użytkownika języka Python są wspierane w trybie dedykowanego dostępu.

Dalsze kroki

Następujące artykuły zawierają więcej informacji na temat pracy z wolumenami: