Udostępnij za pośrednictwem


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:

  1. 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.
  2. 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.
  3. 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 lub READ VOLUME).
  4. 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:

  1. 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 i USE PROVIDER dla magazynu metadanych 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 grant przyznać dostęp do udostępnionego table lub woluminu.
  3. 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

  1. W obszarze roboczym usługi Azure Databricks kliknij ikonę CatalogCatalog, aby otworzyć eksploratora Catalog.

  2. 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.

  3. Na karcie Udostępnione mi znajdź i select dostawcę.

  4. Na karcie Shares znajdź zasób i kliknij Utwórz catalog w wierszu zasobu.

  5. Wprowadź nazwę catalog i opcjonalny komentarz.

  6. 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 CATALOGi 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, SHOWi SELECT dla tables.
  • DESCRIBE VOLUME, LIST <volume-path>, SELECT * FROM <format>.'<volume_path>'i COPY 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 jak UPDATE, MERGE INTO, DELETE (w partycjach) 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 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:

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 testcatalog, a jeden z tables dostawcy, do którego odwołuje się ten widok, znajduje się w testcatalogdostawcy, 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.

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

  2. W okienku po lewej stronie rozwiń menu Catalog, znajdź i selectcatalog utworzone na podstawie współdzielenia.

  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 select 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.