Odczytywanie danych udostępnionych za pomocą Databricks-to-Databricks Delta Sharing (dla recipients)
W tym artykule opisano sposób odczytywania danych, które zostały Ci udostępnione przy użyciu protokołu udostępniania różnicowego usługi Databricks do usługi Databricks, w którym usługa Databricks zarządza bezpiecznym połączeniem do udostępniania danych. W przeciwieństwie do protokołu udostępniania otwartego udostępniania usługi Delta protokół databricks-to-Databricks nie wymaga pliku poświadczeń (zabezpieczenia opartego na tokenach).
Udostępnianie usługi Databricks do usługi Databricks wymaga, aby jako odbiorca miał dostęp do obszaru roboczego usługi Databricks, który jest włączony dla środowiska Unity Catalog.
Jeśli nie masz obszaru roboczego usługi Databricks, który jest włączony dla środowiska Unity Catalog, dane muszą być udostępnione ci przy użyciu protokołu Delta Sharing, więc ten artykuł nie ma zastosowania do ciebie. Zobacz Odczyt danych udostępnionych za pomocą otwartego udostępniania Delta Sharing (dla recipients).
Jak mogę udostępnić udostępnione dane mojemu zespołowi?
Aby odczytać dane i notesy, które zostały Ci udostępnione za pomocą protokołu Databricks-to-Databricks, musisz być użytkownikiem w obszarze roboczym usługi Databricks, w którym jest włączona funkcja Unity Catalog. Członek zespołu udostępnia dostawcy danych unikatowy identifier dla magazynu metadanych unity Catalog, a dostawca danych używa tego identifier do utworzenia bezpiecznego połączenia udostępniania z organizacją. Udostępnione dane stają się następnie dostępne do odczytu w twoim obszarze roboczym, a wszelkie aktualizacje, które dostawca danych wprowadza do udostępnionych tables, views, volumesoraz partycji, są odzwierciedlane w twoim obszarze roboczym niemal w czasie rzeczywistym.
Uwaga
Aktualizacje udostępnionych danych tables, viewsi volumes są wyświetlane w Twoim obszarze roboczym niemal w czasie rzeczywistym. Jednak zmiany column (dodawanie, zmienianie nazw i usuwanie) mogą nie pojawić się w eksploratorze Catalog przez maksymalnie jedną minutę. Podobnie, nowe shares i aktualizacje shares (takie jak dodawanie nowych tables do udostępnienia) są przechowywane w pamięci podręcznej przez minutę, zanim będą dostępne do wyświetlenia i wykonywania zapytań.
Aby odczytać dane, które zostały Ci udostępnione:
- Użytkownik w zespole znajduje zasób — kontener dla tables, views, volumesi notesów, które zostały Ci udostępnione — i używa tego zasobu do utworzenia catalog— kontenera najwyższego poziomu dla wszystkich danych w usłudze Databricks Unity Catalog.
- Użytkownik w zespole udziela lub odmawia dostępu do catalog i obiektów wewnątrz catalog (schematów, tables, viewsi volumes) innym członkom zespołu.
- Odczytujesz dane w tables, viewsi volumes, do których masz przyznany dostęp, podobnie jak do innych zasobów danych w Databricks, do których masz dostęp tylko do odczytu (
SELECT
lubREAD VOLUME
). - Możesz podglądać i klonować notatniki w udziale, o ile masz uprawnienia
USE CATALOG
w catalog.
Wymagane uprawnienia
Aby móc list i wyświetlić szczegółowe informacje o wszystkich providers i dostawcach shares, musisz być administratorem magazynu metadanych lub mieć uprawnienia USE PROVIDER
. Inni użytkownicy mają dostęp tylko do providers i shares, których są właścicielami.
Aby utworzyć catalog na podstawie udziału dostawcy, musisz być administratorem magazynu metadanych, użytkownikiem, który ma zarówno uprawnienia CREATE_CATALOG
, jak i USE PROVIDER
dla magazynu metadanych Unity Catalog, albo użytkownikiem, który ma zarówno uprawnienia CREATE_CATALOG
, jak i własność obiektu dostawcy.
Możliwość dostępu tylko do odczytu grant do schematów (baz danych), tables, viewsi volumes w catalog utworzonych z udziału jest zgodna z typową hierarchią uprawnień Catalog Unity. Możliwość wyświetlania notesów w catalog utworzonych na podstawie udziału wymaga uprawnień USE CATALOG
w catalog. Zobacz Zarządzanie uprawnieniami dla schematów tablesi volumes w Delta Sharing catalog.
Zobacz providers i shares
Aby rozpocząć odczytywanie danych, które zostały Ci udostępnione przez dostawcę danych, musisz znać nazwę dostawcy i współużytkować obiekty przechowywane w magazynie metadanych aparatu Unity Catalog, gdy dostawca udostępnił Ci dane.
Obiekt dostawcy reprezentuje magazyn metadanych unity Catalog, platformę w chmurze i region organizacji, który udostępnił Ci dane.
Obiekt udziału reprezentuje tables, volumesi views, które udostępnił Ci dostawca.
Wyświetl wszystkie providers, które udostępniły Ci dane
Aby wyświetlić list dostępnych danych providers, możesz użyć Eksploratora Catalog, wiersza polecenia Databricks Unity CLI Catalog lub polecenia SQL SHOW PROVIDERS
w notesie Azure Databricks lub edytorze zapytań SQL Databricks.
Wymagane uprawnienia: musisz być administratorem magazynu metadanych lub mieć USE PROVIDER
uprawnienia. Inni użytkownicy mają dostęp tylko do providers i dostawcy shares, których są właścicielami.
Aby uzyskać szczegółowe informacje, zobacz View providers.
Wyświetlanie szczegółów dostawcy
Aby wyświetlić szczegółowe informacje o dostawcy, możesz użyć eksploratora Catalog, interfejsu wiersza polecenia platformy Unity usługi Databricks Catalog lub polecenia DESCRIBE PROVIDER
SQL w notesie usługi Azure Databricks lub edytorze zapytań SQL usługi Databricks.
Wymagane uprawnienia: musisz być administratorem magazynu metadanych, mieć USE PROVIDER
uprawnienia lub być właścicielem obiektu dostawcy.
Aby uzyskać szczegółowe informacje, zobacz Wyświetlanie szczegółów dostawcy.
Wyświetlanie shares
Aby wyświetlić shares, które dostawca ci udostępnił, możesz użyć eksploratora Catalog, interfejsu wiersza polecenia usługi Databricks Unity Catalog lub polecenia SHOW SHARES IN PROVIDER
SQL w notesie usługi Azure Databricks lub edytorze zapytań SQL usługi Databricks.
Wymagane uprawnienia: musisz być administratorem magazynu metadanych, mieć USE PROVIDER
uprawnienia lub być właścicielem obiektu dostawcy.
Aby uzyskać szczegółowe informacje, zobacz View shares udostępniony Ci przez dostawcę.
dostęp do danych w udostępnionym table lub woluminie
Aby odczytać dane w udostępnionym table lub woluminie:
- Użytkownik uprzywilejowany musi utworzyć catalog z udziału zawierającego table lub wolumin. Może to być administrator magazynu metadanych, użytkownik, który ma zarówno uprawnienia
CREATE_CATALOG
, jak iUSE PROVIDER
dla magazynu metadanych Unity Catalog, lub użytkownik, który ma zarówno uprawnieniaCREATE_CATALOG
, jak i własność obiektu dostawcy. - Ten użytkownik lub użytkownik z tymi samymi uprawnieniami musi grant przyznać dostęp do udostępnionego table lub woluminu.
- Do table lub woluminu można uzyskać dostęp tak samo, jak do każdego innego zasobu danych zarejestrowanego w magazynie metadanych Unity Catalog.
Tworzenie catalog z udziału
Aby udostępnić dane z udziału dla twojego zespołu, należy utworzyć catalog z udziału. Aby utworzyć catalog na podstawie udziału, możesz użyć eksploratora Catalog, interfejsu wiersza polecenia platformy Unity usługi Databricks Catalog lub poleceń SQL w notesie usługi Azure Databricks lub edytorze zapytań SQL usługi Databricks.
Uprawnienia wymagane: administrator magazynu metadanych, użytkownik, który ma uprawnienia CREATE_CATALOG
i USE PROVIDER
w magazynie metadanych Unity Catalog, lub użytkownik, który ma uprawnienia CREATE_CATALOG
i własność obiektu dostawcy.
Uwaga
Jeśli część zawiera views, należy użyć nazwy catalog innej niż nazwa catalog, która zawiera widok w meta-bazie danych dostawcy.
Eksplorator Catalog
W obszarze roboczym usługi Azure Databricks kliknij ikonę Catalog, aby otworzyć eksploratora Catalog.
W górnej części okienka Catalog kliknij ikonę koła zębatego i selectDelta Sharing.
Alternatywnie na stronie Szybki dostęp kliknij przycisk Udostępnianie > różnicowe.
Na karcie Udostępnione mi znajdź i select dostawcę.
Na karcie Shares znajdź zasób i kliknij Utwórz catalog w wierszu zasobu.
Wprowadź nazwę catalog i opcjonalny komentarz.
Kliknij pozycję Utwórz.
Alternatywnie, po otwarciu Eksploratora Catalog, możesz kliknąć Utwórz Catalog w prawym górnym rogu, aby utworzyć udostępniony catalog. Zobacz Utwórz catalogs.
SQL
Uruchom następujące polecenie w notesie lub edytorze zapytań SQL usługi Databricks.
CREATE CATALOG [IF NOT EXISTS] <catalog-name>
USING SHARE <provider-name>.<share-name>;
CLI
databricks catalogs create <catalog-name> /
--provider-name <provider-name> /
--share-name <share-name>
catalog utworzony na podstawie udziału ma typ catalog Delta Sharing. Typ można wyświetlić na stronie szczegółów catalog w eksploratorze Catalog lub uruchamiając polecenie DESCRIBE CATALOG SQL w notesie lub zapytaniu SQL usługi Databricks. Wszystkie udostępnione catalogs są wyświetlane w obszarze Catalog> Udostępnione w lewej części okna Eksploratora Catalog.
catalog Delta Sharing można zarządzać w taki sam sposób, jak zwykłe catalogs w magazynie metadanych platformy Unity Catalog. Możesz wyświetlać, updatei usuwać Delta Sharing catalog za pomocą eksploratora Catalog, interfejsu wiersza poleceń Databricks oraz poleceń SQL SHOW CATALOGS
, DESCRIBE CATALOG
, ALTER CATALOG
i DROP CATALOG
.
Struktura przestrzeni nazw na trzecim poziomie w ramach Delta Sharing catalog utworzonego z udziału jest taka sama jak w przypadku zwykłego catalog w środowisku Unity Catalog: catalog.schema.table
lub catalog.schema.volume
.
Table i dane woluminu objęte udostępnioną catalog są dostępne tylko do odczytu, co oznacza, że można wykonywać operacje odczytu, takie jak:
-
DESCRIBE
,SHOW
iSELECT
dla tables. -
DESCRIBE VOLUME
,LIST <volume-path>
,SELECT * FROM <format>.'<volume_path>'
iCOPY INTO
dla volumes.
Notatniki w udostępnionym catalog mogą być przeglądane i klonowane przez każdego użytkownika z USE CATALOG
w catalog.
Modele w udostępnionym catalog można odczytywać i ładować do wnioskowania przez dowolnego użytkownika z następującymi uprawnieniami: uprawnieniami EXECUTE
do zarejestrowanego modelu, a także uprawnieniami USE SCHEMA
i USE CATALOG
w schema i catalog zawierających model.
Zarządzaj uprawnieniami dla schematów, tablesi volumes w Delta Sharing catalog
Domyślnie twórca catalog jest właścicielem wszystkich obiektów danych w ramach udostępniania Delta Sharing catalog i może zarządzać uprawnieniami dla dowolnego z nich.
Uprawnienia są dziedziczone w dół, chociaż niektóre obszary robocze mogą nadal znajdować się w starszym modelu zabezpieczeń, który nie dostarczył dziedziczenia. Zobacz Model dziedziczenia. Każdy użytkownik, któremu nadano uprawnienie SELECT
w catalog, będzie posiadał uprawnienie SELECT
do wszystkich schematów oraz tables w catalog, chyba że to uprawnienie zostanie cofnięte. Podobnie każdy użytkownik, któremu udzielono uprawnień READ VOLUME
w catalog, będzie miał uprawnienie READ VOLUME
dla wszystkich volumes w catalog, chyba że to uprawnienie zostanie odwołane. Nie można grant uprawnień przyznających dostęp do zapisu lub dostępu update do Delta Sharing catalog ani obiektów w Delta Sharing catalog.
Właściciel catalog może delegować własność obiektów danych innym użytkownikom lub grupom, co pozwala tym użytkownikom zarządzać uprawnieniami obiektów i cyklami życia.
Aby uzyskać szczegółowe informacje na temat zarządzania uprawnieniami do obiektów danych przy użyciu Unity Catalog, zobacz Zarządzanie uprawnieniami w Unity Catalog.
Odczytywanie danych w udostępnionym table
Dane w udostępnionym table można odczytywać jako użytkownik usługi Azure Databricks, korzystając z dowolnego z dostępnych narzędzi: Catalog Explorer, notesów, zapytań SQL, interfejsu wiersza polecenia Databricks oraz interfejsów API REST Databricks. Musisz mieć uprawnienia SELECT
na table.
Odczytywanie danych w udostępnionym woluminie
Możesz czytać dane w udostępnionym woluminie jako użytkownik Azure Databricks, za pomocą dowolnego z dostępnych narzędzi: Catalog Explorer, notesów, zapytań SQL, interfejsu wiersza poleceń Databricks oraz interfejsów API REST Databricks. Musisz mieć READ VOLUME
uprawnienia do woluminu.
Ładowanie modelu udostępnionego na potrzeby wnioskowania
Aby uzyskać szczegółowe informacje na temat ładowania modelu udostępnionego i używania go do wnioskowania wsadowego, zobacz Ładowanie wersji modelu według aliasu dla obciążeń wnioskowania.
Zażądaj historii table.
Jeśli historia jest udostępniana wraz z table, możesz wykonać zapytanie o dane table jako wersję lub sygnaturę czasową. Wymaga środowiska Databricks Runtime 12.2 LTS lub nowszego.
Na przykład:
SELECT * FROM vaccine.vaccine_us.vaccine_us_distribution VERSION AS OF 3;
SELECT * FROM vaccine.vaccine_us.vaccine_us_distribution TIMESTAMP AS OF "2023-01-01 00:00:00";
Ponadto jeśli źródło danych zmian (CDF) jest włączone przy użyciu table, możesz wykonać zapytanie dotyczące usługi CDF. Obsługiwane są zarówno wersje, jak i znacznik czasu:
SELECT * FROM table_changes('vaccine.vaccine_us.vaccine_us_distribution', 0, 3);
SELECT * FROM table_changes('vaccine.vaccine_us.vaccine_us_distribution', "2023-01-01 00:00:00", "2022-02-01 00:00:00");
Aby uzyskać więcej informacji na temat zestawienia zmian danych, zobacz Use Delta Lake change data feed on Azure Databricks (Używanie zestawienia zmian usługi Delta Lake w usłudze Azure Databricks).
zapytania o table przy użyciu Apache Spark Structured Streaming
Jeśli table jest udostępniona z historią, możesz użyć jej jako źródła dla Spark Structured Streaming. Wymaga środowiska Databricks Runtime 12.2 LTS lub nowszego.
Obsługiwane opcje:
-
ignoreDeletes
: Ignoruj transakcje, które usuwają dane. -
ignoreChanges
: ponowne przetwarzanie aktualizacji, jeśli pliki zostały przepisane w table źródłowym z powodu operacji zmiany danych, takiej jakUPDATE
,MERGE INTO
,DELETE
(w partycjach) lubOVERWRITE
. Nadal można emitować niezmienione wiersze. W związku z tym odbiorcy podrzędni powinni mieć możliwość obsługi duplikatów. Usunięcia nie są propagowane w dół.ignoreChanges
obejmujeignoreDeletes
. W związku z tym, jeśli używaszignoreChanges
, strumień nie zostanie zakłócony przez usunięcia lub aktualizacje źródła table. -
startingVersion
: udostępniona wersja table, od której należy zacząć. Wszystkie table zmiany począwszy od tej wersji (włącznie) będą odczytywane przez źródło przesyłania strumieniowego. -
startingTimestamp
: znacznik czasu do rozpoczęcia od. Wszystkie zmiany table zatwierdzone w momencie znacznika czasu lub później (włącznie) będą odczytywane przez źródło przesyłania strumieniowego. Przykład:"2023-01-01 00:00:00.0"
-
maxFilesPerTrigger
: liczba nowych plików, które mają być uwzględniane w każdej mikrosadowej partii. -
maxBytesPerTrigger
: ilość danych przetwarzanych w każdej mikrosadowej partii. Ta opcja ustawia wartość "miękkie maksimum", co oznacza, że partia przetwarza przybliżoną ilość tych danych i może przetworzyć więcej niż limit, aby zapytanie przesyłowe mogło posunąć się naprzód w przypadkach, gdy najmniejsza jednostka wejściowa jest większa niż ta limit. -
readChangeFeed
: usługa Stream odczytuje zestawienie danych zmian udostępnionego table.
Nieobsługiwane opcje:
Trigger.availableNow
Przykładowe zapytania przesyłania strumieniowego ze strukturą
Scala
spark.readStream.format("deltaSharing")
.option("startingVersion", 0)
.option("ignoreChanges", true)
.option("maxFilesPerTrigger", 10)
.table("vaccine.vaccine_us.vaccine_us_distribution")
Python
spark.readStream.format("deltaSharing")\
.option("startingVersion", 0)\
.option("ignoreDeletes", true)\
.option("maxBytesPerTrigger", 10000)\
.table("vaccine.vaccine_us.vaccine_us_distribution")
Jeśli źródło danych zmian (CDF) jest włączone za pomocą table, możesz strumieniowo odczytywać CDF.
spark.readStream.format("deltaSharing")
.option("readChangeFeed", "true")
.table("vaccine.vaccine_us.vaccine_us_distribution")
odczyt tables z włączonymi wektorami usuwania lub włączonym mapowaniem column
Ważne
Ta funkcja jest dostępna w publicznej wersji zapoznawczej.
Wektory usuwania to funkcja optymalizacji magazynu, którą dostawca może włączyć na udostępnionych zasobach Delta tables. Zobacz Co to są wektory usuwania?.
Usługa Azure Databricks obsługuje również mapowanie column dla Delta tables. Zobacz Zmianę nazwy i usunięcie columns z mapowaniem Delta Lake column.
Jeśli dostawca udostępnił table z wektorami usuwania lub włączonym mapowaniem column, możesz wykonać odczyty wsadowe na table przy użyciu magazynu SQL lub klastra działającego w środowisku Databricks Runtime 14.1 lub nowszym. Zapytania CDF i przesyłania strumieniowego wymagają środowiska Databricks Runtime 14.2 lub nowszego.
Możesz wykonywać zapytania wsadowe as-is, ponieważ mogą one automatycznie rozpoznawać responseFormat
w oparciu o cechy table wspólnych table.
Aby odczytać źródło danych zmian (CDF) lub wykonać zapytania przesyłane strumieniowo na udostępnionych tables z wektorami usuwania lub włączonym mapowaniem column, należy set dodatkową opcję responseFormat=delta
.
W poniższych przykładach pokazano zapytania wsadowe, CDF i streamingowe:
import org.apache.spark.sql.SparkSession
// Batch query
spark.read.format("deltaSharing").table(<tableName>)
// CDF query
spark.read.format("deltaSharing")
.option("readChangeFeed", "true")
.option("responseFormat", "delta")
.option("startingVersion", 1)
.table(<tableName>)
// Streaming query
spark.readStream.format("deltaSharing").option("responseFormat", "delta").table(<tableName>)
przeczytaj udostępnione views
Ważne
Ta funkcja jest dostępna w publicznej wersji zapoznawczej.
Odczytywanie udostępnionych views jest takie samo jak odczytywanie udostępnionych tablesz następującymi wyjątkami:
Wyświetlanie ograniczeń udostępniania:
- Nie można udostępniać views, które odwołują się do udostępnionych tables lub udostępnionych views.
- Udostępnione views obsługują tylko podzestaw wbudowanych funkcji i operatorów w usłudze Databricks. Zobacz Functions obsługiwane w usłudze Databricks-to-Databricks shared views.
Wymagania dotyczące nazewnictwa:
Nazwa catalog, której używasz dla udostępnionej catalog zawierającej widok, nie może być taka sama jak jakakolwiek nazwa catalog dostawcy zawierającego table, do którego odnosi się widok. Jeśli na przykład widok udostępniony znajduje się w test
catalog, a jeden z tables dostawcy, do którego odwołuje się ten widok, znajduje się w test
catalogdostawcy, zapytanie spowoduje błąd konfliktu przestrzeni nazw. Zobacz Tworzenie catalog z udziału.
Historia i przesyłanie strumieniowe:
Nie można wykonywać zapytań dotyczących historii ani używać widoku jako źródła przesyłania strumieniowego.
Wyświetl obsługę otwierania udostępniania:
Instrukcje w tym artykule koncentrują się na odczytywaniu udostępnionych danych przy użyciu interfejsów użytkownika usługi Azure Databricks, w szczególności składni i interfejsów Unity Catalog. Możesz również wykonywać zapytania dotyczące udostępnionych views przy użyciu narzędzi Apache Spark, Python i BI, takich jak Tableau i Power BI.
Koszty:
Istnieją dwa potencjalne źródła kosztów udostępniania widoku:
- Koszt obliczeń naliczany przez usługę Databricks.
- Koszt transferu magazynu i sieci (ruchu wychodzącego) naliczany przez dostawcę magazynu.
Koszt obliczeniowy jest oparty na typie zasobu obliczeniowego odbiorcy:
Obliczenia adresata | Kto płaci? | SKU |
---|---|---|
Usługa Databricks bez użycia serwera | Adresat | Bezserwerowa jednostka SKU używana przez adresata |
Databricks Classic | Adresat | Interakcyjny bezserwerowy |
Otwieranie łączników udostępniania różnicowego | Dostawca | Interakcyjny bezserwerowy |
Odczytywanie notesów udostępnionych
Aby wyświetlić podgląd i sklonować pliki udostępnionego notesu, możesz użyć programu Catalog Explorer.
Wymagane uprawnienia:Catalog właściciel lub użytkownik z przywilejem USE CATALOG
na catalog utworzonym z udziału.
W obszarze roboczym usługi Azure Databricks kliknij ikonę Catalog.
W okienku po lewej stronie rozwiń menu Catalog, znajdź i selectcatalog utworzone na podstawie współdzielenia.
Na karcie Inne zasoby zobaczysz wszystkie pliki notesu udostępnionego.
Kliknij nazwę udostępnionego pliku notesu, aby wyświetlić jego podgląd.
(Opcjonalnie) Kliknij przycisk Klonuj, aby zaimportować plik notesu udostępnionego do obszaru roboczego.
- W oknie dialogowym Klonowanie do opcjonalnie wprowadź Nowa nazwa, a następnie select folder obszaru roboczego, do którego chcesz sklonować plik notesu.
- Kliknij pozycję Klonuj.
- Po sklonowanym notesie zostanie wyświetlone okno dialogowe z informacją, że został pomyślnie sklonowany. Kliknij przycisk ujawnić w edytorze notesów w oknie dialogowym, aby wyświetlić go w edytorze notesów.
Zobacz Wprowadzenie do notesów usługi Databricks.