Udostępnij za pośrednictwem


Odczytywanie danych udostępnionych przy użyciu Databricks-to-Databricks Delta Sharing (dla odbiorców)

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 usługi Unity Catalog.

Jeśli nie masz obszaru roboczego usługi Databricks, który jest włączony dla Unity Catalogu, dane muszą być udostępniane tobie przy użyciu protokołu Delta Sharing, a ten artykuł cię nie dotyczy. Zobacz Odczyt danych udostępnionych z wykorzystaniem Delta Sharing do otwartej wymiany (dla odbiorców).

Jak mogę udostępnić udostępnione dane mojemu zespołowi?

Aby odczytać dane i notesy, które zostały Ci udostępnione przy użyciu protokołu Databricks-to-Databricks, musisz być użytkownikiem obszaru roboczego usługi Databricks, który jest skonfigurowany do używania usługi Unity Catalog. Członek zespołu przekazuje dostawcy danych unikatowy identyfikator metamagazynu Unity Catalogu, a dostawca danych używa tego identyfikatora do utworzenia bezpiecznego połączenia do udostępniania z organizacją. Dane udostępnione stają się następnie dostępne do odczytu w obszarze roboczym oraz wszelkie aktualizacje udostępniane przez dostawcę danych do udostępnionych tabel, widoków, woluminów i partycji są odzwierciedlane w obszarze roboczym niemal w czasie rzeczywistym.

Uwaga

Aktualizacje udostępnionych tabel danych, widoków i woluminów są wyświetlane w obszarze roboczym niemal w czasie rzeczywistym. Jednak zmiany w kolumnie (dodawanie, zmienianie nazw i usuwanie) mogą nie pojawić się w Eksploratorze wykazu przez maksymalnie jedną minutę. Podobnie nowe udziały i aktualizacje udziałów (takie jak dodawanie nowych tabel do udziału) są buforowane przez minutę, zanim będą dostępne do wyświetlania i wykonywania zapytań.

Aby odczytać dane, które zostały Ci udostępnione:

  1. Użytkownik w zespole znajduje udział— kontener na tabele, widoki, woluminy i notatniki, które zostały Ci udostępnione — i używa tego udziału do utworzenia katalogu — kontenera najwyższego poziomu dla wszystkich danych w katalogu Unity w Databricks.
  2. Użytkownik w zespole udziela lub odmawia dostępu do katalogu oraz obiektów w wykazie (schematach, tabelach, widokach i woluminach) innym członkom zespołu.
  3. Dane są odczytywane w tabelach, widokach i woluminach, do których udzielono dostępu, podobnie jak w przypadku każdego innego zasobu danych w usłudze Databricks, do którego masz dostęp tylko do odczytu (SELECT lub READ VOLUME).
  4. Podglądasz i klonujesz notesy w zasobie, o ile masz uprawnienia USE CATALOG w katalogu.

Wymagane uprawnienia

Aby móc wymieniać i wyświetlać szczegółowe informacje o wszystkich dostawcach i udziałach dostawców, musisz być administratorem metadanych lub mieć uprawnienia USE PROVIDER. Inni użytkownicy mają dostęp tylko do dostawców i udziałów, których są właścicielami.

Aby utworzyć katalog z udziału dostawcy, musisz być administratorem metastore, użytkownikiem, który ma zarówno uprawnienia CREATE_CATALOG, jak i USE PROVIDER dla Unity Catalog, lub użytkownikiem, który ma zarówno uprawnienia CREATE_CATALOG, jak i własność obiektu dostawcy.

Możliwość udzielania dostępu w trybie tylko do odczytu do schematów (baz danych), tabel, widoków i woluminów w katalogu utworzonym z udziału jest zgodna z typową hierarchią uprawnień Unity Catalog. Możliwość wyświetlania notatników w katalogu utworzonym z udostępnienia wymaga uprawnień USE CATALOG w katalogu. Zobacz Zarządź uprawnieniami dla schematów, tabel i woluminów w Delta Sharing katalogu.

Wyświetlanie dostawców i udziałów

Aby rozpocząć odczytywanie danych, które zostały Ci udostępnione przez dostawcę danych, musisz znać nazwę dostawcy oraz współdzielić obiekty przechowywane w magazynie metadanych Unity Catalog, gdy dostawca już Ci udostępnił dane.

Obiekt dostawcy reprezentuje metamagazyn wykazu Unity, platformę w chmurze i region organizacji, która udostępniła Ci dane.

Obiekt udostępniania reprezentuje tabele, woluminy i widoki udostępnione Tobie przez dostawcę.

Wyświetl wszystkich dostawców, którzy udostępnili Ci dane

Aby wyświetlić listę dostępnych dostawców danych, możesz użyć Eksploratora katalogów, interfejsu wiersza poleceń Unity Catalog Databricks lub polecenia SHOW PROVIDERS SQL w notatniku usługi Azure Databricks lub edytorze zapytań SQL usługi Databricks.

Wymagane uprawnienia: musisz być administratorem magazynu metadanych lub mieć USE PROVIDER uprawnienia. Inni użytkownicy mają dostęp tylko do dostawców i udziałów dostawców, których są właścicielami.

Aby uzyskać szczegółowe informacje, zobacz Wyświetl dostawców.

Wyświetlanie szczegółów dostawcy

Aby wyświetlić szczegółowe informacje o dostawcy, możesz użyć Eksploratora Katalogów, Wiersza poleceń Unity Catalog Databricks lub polecenia DESCRIBE PROVIDER SQL w notatniku Azure Databricks lub edytorze zapytań SQL 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 udziałów

Aby wyświetlić udziały udostępnione przez dostawcę, możesz użyć Eksploratora katalogów, interfejsu wiersza polecenia Databricks Unity Catalog lub polecenia SHOW SHARES IN PROVIDER SQL w notatniku 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 Udostępnienia, które dostawca udostępnił Tobie.

dostęp do danych w udostępnionej tabeli lub woluminie

Aby odczytać dane w udostępnionej tabeli lub woluminie:

  1. Użytkownik uprzywilejowany musi utworzyć katalog na podstawie udziału zawierającego tabelę lub wolumin. Może to być administrator magazynu metadanych, użytkownik, który ma zarówno uprawnienia CREATE_CATALOG, jak i USE PROVIDER dla Unity Catalog, lub użytkownik, który ma zarówno uprawnienia CREATE_CATALOG, jak i własność obiektu dostawcy.
  2. Ten użytkownik lub użytkownik z tymi samymi uprawnieniami musi udzielić Ci dostępu do udostępnionej tabeli lub woluminu.
  3. Dostęp do tabeli lub objętości można uzyskać tak samo, jak do każdego innego zasobu danych zarejestrowanego w Katalogu Unity.

Tworzenie wykazu na podstawie udziału

Aby dane w udostępnieniu były dostępne dla twojego zespołu, musisz utworzyć katalog z udostępnienia. Aby utworzyć wykaz na podstawie udziału, możesz użyć Eksploratora wykazu, interfejsu wiersza polecenia wykazu usługi Databricks 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 posiada zarówno uprawnienia CREATE_CATALOG, jak i USE PROVIDER dla magazynu metadanych Unity Catalog, lub użytkownik, który ma zarówno uprawnienie CREATE_CATALOG, jak i własność obiektu dostawcy.

Uwaga

Jeśli udział zawiera widoki, należy użyć nazwy wykazu innej niż nazwa wykazu zawierającego widok w magazynie metadanych dostawcy.

Eksplorator wykazu

  1. W obszarze roboczym usługi Azure Databricks kliknij ikonę katalogu katalog, aby otworzyć Eksplorator katalogów.

  2. W górnej części okienka katalogu kliknij ikonę koła zębatego i wybierz Delta Sharing .

    Alternatywnie na stronie Szybki dostęp kliknij przycisk Udostępnianie > różnicowe.

  3. Na karcie Udostępnione mi znajdź i wybierz usługodawcę.

  4. Na karcie Udziały znajdź udział i kliknij Utwórz wykaz w wierszu udziału.

  5. Wprowadź nazwę wykazu i opcjonalny komentarz.

  6. Kliknij pozycję Utwórz.

Alternatywnie po otwarciu Eksploratora wykazu możesz kliknąć Utwórz wykaz w prawym górnym rogu, aby utworzyć wykaz udostępniony. Zobacz Tworzenie katalogów.

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>

Katalog utworzony na podstawie współdzielenia ma typ katalogu Delta Sharing. Typ można wyświetlić na stronie szczegółów wykazu w Eksploratorze wykazu lub uruchamiając polecenie DESCRIBE CATALOG SQL w notesie lub zapytaniu SQL usługi Databricks. Wszystkie wykazy udostępnione są wymienione w obszarze Catalog > Shared w okienku po lewej stronie Eksploratora wykazu.

Katalogiem Delta Sharing można zarządzać w taki sam sposób, jak zwykłymi katalogami w metastore Unity Catalogu. Katalog Delta Sharing można wyświetlać, aktualizować i usuwać przy użyciu Catalog Explorer, Databricks CLI oraz poleceń SQL SHOW CATALOGS, DESCRIBE CATALOG, ALTER CATALOGi DROP CATALOG.

Struktura 3-poziomowej przestrzeni nazw w katalogu Delta Sharing utworzonym na podstawie udziału jest taka sama jak w ramach zwykłego katalogu w Unity Catalog: catalog.schema.table lub catalog.schema.volume.

Dane tabeli i woluminu w katalogu udostępnionym są tylko do odczytu, co oznacza, że można wykonywać operacje odczytu, takie jak:

  • DESCRIBE, SHOWi SELECT dla tabel.
  • DESCRIBE VOLUME, LIST <volume-path>, SELECT * FROM <format>.'<volume_path>'i COPY INTO dla woluminów.

Notesy w wykazie udostępnionym mogą być w wersji zapoznawczej i klonowane przez dowolnego użytkownika z USE CATALOG w wykazie.

Modele w wykazie udostępnionym można odczytywać i ładować do wnioskowania przez dowolnego użytkownika z następującymi uprawnieniami: EXECUTE uprawnienia do zarejestrowanego modelu oraz uprawnienia USE SCHEMA i USE CATALOG w schemacie i wykazie zawierającym model.

Zarządzanie uprawnieniami dla schematów, tabel i woluminów w katalogu Delta Sharing

Domyślnie twórca wykazu jest właścicielem wszystkich obiektów danych w katalogu Delta Sharing 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 udzielono uprawnień SELECT w wykazie, będzie miał uprawnienia SELECT dla wszystkich schematów i tabel w wykazie, chyba że to uprawnienie zostanie odwołane. Podobnie każdy użytkownik, któremu udzielono uprawnień READ VOLUME w wykazie, będzie miał uprawnienia READ VOLUME dla wszystkich woluminów w wykazie, chyba że to uprawnienie zostanie odwołane. Nie można przyznać uprawnień, które zapewniają dostęp do zapisu lub aktualizacji katalogu Delta Sharing lub obiektów w katalogu Delta Sharing.

Właściciel wykazu 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 katalogu Unity, zobacz Zarządzanie uprawnieniami w katalogu Unity.

Odczytywanie danych w udostępnionej tabeli

Dane w tabeli udostępnionej można odczytywać za pomocą dowolnych narzędzi dostępnych dla użytkownika usługi Azure Databricks: Eksploratora katalogu, notesów, zapytań SQL, interfejsu wiersza polecenia Databricks oraz interfejsów API REST Databricks. Musisz mieć uprawnienia SELECT w tabeli.

Odczytywanie danych w udostępnionym woluminie

Dane w udostępnionym woluminie można odczytywać, będąc użytkownikiem usługi Azure Databricks, przy użyciu dowolnego z dostępnych narzędzi: Eksplorator katalogu, notesy, zapytania SQL, interfejs wiersza polecenia usługi Databricks i interfejsy API REST usługi 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.

Wykonywanie zapytań dotyczących danych historii tabeli

Jeśli historia jest udostępniana wraz z tabelą, możesz wykonać zapytanie o dane tabeli dla wersji lub znacznika czasu. 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 dla tabeli, możesz wykonać zapytanie dotyczące 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).

Kierowanie zapytań do tabeli przy użyciu Apache Spark Structured Streaming

Jeśli tabela jest udostępniana z historią, możesz użyć jej jako źródła dla strumieniowego przesyłania danych 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 tabeli źródłowej z powodu operacji zmiany danych, takiej jak UPDATE, MERGE INTO, DELETE (w ramach partycji) lub OVERWRITE. 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 obejmuje ignoreDeletes. W związku z tym, jeśli używasz ignoreChanges, strumień nie będzie zakłócany przez usunięcia lub aktualizacje tabeli źródłowej.
  • startingVersion: wersja tabeli, od której należy rozpocząć. Wszystkie zmiany tabeli rozpoczynające się od tej wersji (włącznie) będą odczytywane przez źródło przesyłania strumieniowego.
  • startingTimestamp: znacznik czasu do rozpoczęcia od. Wszystkie zmiany tabeli zatwierdzone w danym lub późniejszym momencie (włącznie) będą odczytywane przez źródło strumieniowe. 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 "miękki pułap", co oznacza, że partia przetwarza około tej ilości danych i może przetwarzać więcej niż limit, aby zapytanie strumieniowe mogło kontynuować, gdy najmniejsza jednostka danych wejściowych przekracza ten limit.
  • readChangeFeed: Stream odczytuje strumień danych o zmianach w udostępnionej tabeli.

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 w tabeli, możesz odczytywać strumieniowo dane ze źródła CDF.

spark.readStream.format("deltaSharing")
.option("readChangeFeed", "true")
.table("vaccine.vaccine_us.vaccine_us_distribution")

Odczyt tabel z włączonymi wektorami usuwania lub mapowaniem kolumn

Ważne

Ta funkcja jest dostępna w publicznej wersji zapoznawczej.

Wektory usuwania to funkcja optymalizacji magazynu, którą dostawca może włączyć w udostępnionych tabelach delty. Zobacz Co to są wektory usuwania?.

Usługa Azure Databricks obsługuje również mapowanie kolumn dla tabel delty. Zobacz Zmień nazwę i usuń kolumny poprzez mapowanie kolumn Delta Lake.

Jeśli dostawca udostępnił tabelę z włączonymi wektorami usuwania lub mapowaniem kolumn, możesz wykonać odczyty wsadowe w tabeli za pomocą magazynu SQL lub klastra z uruchomionym środowiskiem 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 rozwiązywać responseFormat na podstawie właściwości współdzielonej tabeli.

Aby odczytać strumień danych o zmianach (CDF) lub wykonać zapytania przesyłane strumieniowo w udostępnionych tabelach, w których włączono wektory usuwania lub mapowanie kolumn, należy ustawić 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>)

Odczytywanie widoków udostępnionych

Ważne

Ta funkcja jest dostępna w publicznej wersji zapoznawczej.

Odczytywanie widoków udostępnionych jest takie samo jak odczytywanie tabel udostępnionych, z następującymi wyjątkami:

Wyświetlanie ograniczeń udostępniania:

Wymagania dotyczące nazewnictwa:

Nazwa wykazu używana dla wykazu udostępnionego, która zawiera widok, nie może być taka sama jak wykaz dostawców, który zawiera tabelę, do której odwołuje się widok. Jeśli na przykład widok udostępniony znajduje się w katalogu test, a jedna z tabel dostawcy, do której odwołuje się ten widok, znajduje się w katalogu test dostawcy, zapytanie spowoduje błąd konfliktu przestrzeni nazw. Zobacz Tworzenie wykazu na podstawie 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 katalogu Unity. Możesz również wykonywać zapytania dotyczące widoków udostępnionych 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ć Eksploratora Katalogu.

Wymagane uprawnienia: właściciel katalogu lub użytkownik z uprawnieniami USE CATALOG w katalogu utworzonym na podstawie udostępnienia.

  1. W obszarze roboczym usługi Azure Databricks kliknij ikonę Katalogu .

  2. W okienku po lewej stronie rozwiń menu katalogu , znajdź i wybierz wykaz utworzony na podstawie udziału.

  3. Na karcie Inne zasoby zobaczysz wszystkie pliki notesu udostępnionego.

  4. Kliknij nazwę udostępnionego pliku notesu, aby wyświetlić jego podgląd.

  5. (Opcjonalnie) Kliknij przycisk Klonuj, aby zaimportować plik notesu udostępnionego do obszaru roboczego.

    1. W oknie dialogowym Klonowanie do opcjonalnie wprowadź Nowa nazwa, a następnie wybierz folder obszaru roboczego, do którego chcesz sklonować plik notesu.
    2. Kliknij pozycję Klonuj.
    3. 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.