Share via


Gegevens lezen die worden gedeeld met Databricks-to-Databricks Delta Sharing (voor ontvangers)

In dit artikel wordt beschreven hoe u gegevens leest die met u zijn gedeeld met behulp van het Databricks-to-Databricks Delta Sharing-protocol, waarin Databricks een beveiligde verbinding beheert voor het delen van gegevens. In tegenstelling tot het open sharing-protocol voor Delta Sharing is voor het Databricks-naar-Databricks-protocol geen referentiebestand (beveiliging op basis van tokens) vereist.

Voor het delen van Databricks-naar-Databricks moet u als ontvanger toegang hebben tot een Databricks-werkruimte die is ingeschakeld voor Unity Catalog.

Als u geen Databricks-werkruimte hebt die is ingeschakeld voor Unity Catalog, moeten gegevens met u worden gedeeld met behulp van het open sharing-protocol voor Delta Sharing. Dit artikel is niet van toepassing op u. Zie Gegevens lezen die worden gedeeld met Behulp van Delen met Delta Delen (voor geadresseerden).

Hoe kan ik gedeelde gegevens beschikbaar maken voor mijn team?

Als u gegevens en notebooks wilt lezen die met u zijn gedeeld met behulp van het Databricks-to-Databricks-protocol, moet u een gebruiker zijn in een Databricks-werkruimte die is ingeschakeld voor Unity Catalog. Een lid van uw team biedt de gegevensprovider een unieke id voor uw Unity Catalog-metastore en de gegevensprovider gebruikt die id om een beveiligde verbinding voor delen met uw organisatie te maken. De gedeelde gegevens zijn vervolgens beschikbaar voor leestoegang in uw werkruimte en eventuele updates die de gegevensprovider aanbrengt in de gedeelde tabellen, weergaven, volumes en partities worden in bijna realtime weergegeven in uw werkruimte.

Notitie

Updates voor gedeelde gegevenstabellen, weergaven en volumes worden in bijna realtime weergegeven in uw werkruimte. Kolomwijzigingen (toevoegen, hernoemen, verwijderen) worden echter maximaal één minuut weergegeven in Catalog Explorer. Op dezelfde manier worden nieuwe shares en updates voor shares (zoals het toevoegen van nieuwe tabellen aan een share) één minuut in de cache opgeslagen voordat ze voor u beschikbaar zijn om te bekijken en query's uit te voeren.

Gegevens lezen die met u zijn gedeeld:

  1. Een gebruiker in uw team vindt de share( de container voor de tabellen, weergaven, volumes en notebooks die met u zijn gedeeld) en gebruikt die share om een catalogus te maken, de container op het hoogste niveau voor alle gegevens in Databricks Unity Catalog.
  2. Een gebruiker in uw team verleent of weigert toegang tot de catalogus en de objecten in de catalogus (schema's, tabellen, weergaven en volumes) aan andere leden van uw team.
  3. U leest de gegevens in de tabellen, weergaven en volumes waartoe u toegang hebt, net als alle andere gegevensassets in Databricks waartoe u alleen-lezen (SELECT of READ VOLUME) toegang hebt.
  4. U bekijkt en kloont notebooks in de share, zolang u de USE CATALOG bevoegdheid hebt voor de catalogus.

Vereiste machtigingen

Als u details over alle providers en providershares wilt kunnen weergeven en weergeven, moet u een metastore-beheerder zijn of over de USE PROVIDER bevoegdheid beschikken. Andere gebruikers hebben alleen toegang tot de providers en shares die ze bezitten.

Als u een catalogus wilt maken op basis van een providershare, moet u een metastore-beheerder zijn, een gebruiker met zowel de als USE PROVIDER de CREATE_CATALOG bevoegdheden voor uw Unity Catalog-metastore, of een gebruiker die zowel de bevoegdheid als het CREATE_CATALOG eigendom van het providerobject heeft.

De mogelijkheid om alleen-lezentoegang te verlenen tot de schema's (databases), tabellen, weergaven en volumes in de catalogus die is gemaakt op basis van de share, volgt de typische privilegehiërarchie van Unity Catalog. De mogelijkheid om notitieblokken weer te geven in de catalogus die is gemaakt op basis van de share, vereist de USE CATALOG bevoegdheid voor de catalogus. Zie Machtigingen beheren voor de schema's, tabellen en volumes in een Delta Sharing-catalogus.

Providers en shares weergeven

Als u de gegevens wilt lezen die met u zijn gedeeld door een gegevensprovider, moet u de naam van de provider weten en objecten delen die zijn opgeslagen in uw Unity Catalog-metastore zodra de provider gegevens met u heeft gedeeld.

Het providerobject vertegenwoordigt de Unity Catalog-metastore, het cloudplatform en de regio van de organisatie die de gegevens met u heeft gedeeld.

Het shareobject vertegenwoordigt de tabellen, volumes en weergaven die de provider met u heeft gedeeld.

Alle providers weergeven die gegevens met u hebben gedeeld

Als u een lijst met beschikbare gegevensproviders wilt weergeven, kunt u Catalog Explorer, de Databricks Unity Catalog CLI of de SHOW PROVIDERS SQL-opdracht gebruiken in een Azure Databricks-notebook of de Databricks SQL-queryeditor.

Vereiste machtigingen: u moet een metastore-beheerder zijn of de USE PROVIDER bevoegdheid hebben. Andere gebruikers hebben alleen toegang tot de providers en providershares die ze bezitten.

Zie Providers weergeven voor meer informatie.

Details van provider weergeven

Als u details over een provider wilt weergeven, kunt u Catalog Explorer, de Databricks Unity Catalog CLI of de DESCRIBE PROVIDER SQL-opdracht gebruiken in een Azure Databricks-notebook of de Databricks SQL-queryeditor.

Vereiste machtigingen: u moet een metastore-beheerder zijn, de USE PROVIDER bevoegdheid hebben of eigenaar zijn van het providerobject.

Zie Details van provider weergeven voor meer informatie.

Shares weergeven

Als u de shares wilt weergeven die een provider met u heeft gedeeld, kunt u Catalog Explorer, de Databricks Unity Catalog CLI of de SHOW SHARES IN PROVIDER SQL-opdracht gebruiken in een Azure Databricks-notebook of de Databricks SQL-queryeditor.

Vereiste machtigingen: u moet een metastore-beheerder zijn, de USE PROVIDER bevoegdheid hebben of eigenaar zijn van het providerobject.

Zie Shares weergeven die een provider met u heeft gedeeld voor meer informatie.

Toegang tot gegevens in een gedeelde tabel of een gedeeld volume

Gegevens lezen in een gedeelde tabel of een gedeeld volume:

  1. Een bevoegde gebruiker moet een catalogus maken op basis van de share die de tabel of het volume bevat. Dit kan een metastore-beheerder zijn, een gebruiker die zowel de CREATE_CATALOG als USE PROVIDER bevoegdheden heeft voor uw Unity Catalog-metastore, of een gebruiker die zowel de bevoegdheid als het CREATE_CATALOG eigendom van het providerobject heeft.
  2. Deze gebruiker of een gebruiker met dezelfde bevoegdheden moet u toegang verlenen tot de gedeelde tabel of het gedeelde volume.
  3. U hebt toegang tot de tabel of het volume, net zoals elke andere gegevensasset die is geregistreerd in uw Unity Catalog-metastore.

Een catalogus maken op basis van een share

Als u de gegevens in een share toegankelijk wilt maken voor uw team, moet u een catalogus maken op basis van de share. Als u een catalogus wilt maken op basis van een share, kunt u Catalog Explorer, de Databricks Unity Catalog CLI of SQL-opdrachten gebruiken in een Azure Databricks-notebook of de Databricks SQL-queryeditor.

Vereiste machtigingen: een metastore-beheerder, een gebruiker met zowel de CREATE_CATALOG als USE PROVIDER de bevoegdheden voor uw Unity Catalog-metastore, of een gebruiker die zowel de bevoegdheid als het CREATE_CATALOG eigendom van het providerobject heeft.

Notitie

Als de share weergaven bevat, moet u een andere catalogusnaam gebruiken dan de naam van de catalogus die de weergave bevat in de metastore van de provider.

Catalogusverkenner

  1. Klik in uw Azure Databricks-werkruimte op CataloguspictogramCatalogus.
  2. Vouw in het linkerdeelvenster het menu Delta delen uit en selecteer Gedeeld met mij.
  3. Selecteer de provider op het tabblad Providers .
  4. Zoek op het tabblad Shares de share en klik op Catalogus maken op de rij delen.
  5. Voer een naam in voor de catalogus en optionele opmerking.
  6. Klik op Create.

Sql

Voer de volgende opdracht uit in een notebook of de Sql-query-editor van 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>

De catalogus die is gemaakt op basis van een share heeft een catalogustype Delta Sharing. U kunt het type weergeven op de pagina met catalogusdetails in Catalog Explorer of door de SQL-opdracht DESCRIBE CATALOG uit te voeren in een notebook of Databricks SQL-query. Alle gedeelde catalogi worden weergegeven onder Catalogus > gedeeld in het linkerdeelvenster van Catalog Explorer.

Een Delta Sharing-catalogus kan op dezelfde manier worden beheerd als gewone catalogi in een Unity Catalog-metastore. U kunt een Delta Sharing-catalogus weergeven, bijwerken en verwijderen met behulp van Catalog Explorer, de Databricks CLI en met behulp vanSHOW CATALOGSDESCRIBE CATALOG, en ALTER CATALOGDROP CATALOG SQL-opdrachten.

De naamruimtestructuur op drie niveaus onder een Delta Sharing-catalogus die is gemaakt op basis van een share, is hetzelfde als die onder een normale catalogus in Unity Catalog: catalog.schema.table of catalog.schema.volume.

Tabel- en volumegegevens onder een gedeelde catalogus hebben het kenmerk Alleen-lezen, wat betekent dat u leesbewerkingen kunt uitvoeren zoals:

  • DESCRIBE, SHOWen SELECT voor tabellen.
  • DESCRIBE VOLUME, , LIST <volume-path>en SELECT * FROM <format>.'<volume_path>'COPY INTO voor volumes.

Notitieblokken in een gedeelde catalogus kunnen worden bekeken en gekloond door elke gebruiker in USE CATALOG de catalogus.

Modellen in een gedeelde catalogus kunnen worden gelezen en geladen voor deductie door elke gebruiker met de volgende bevoegdheden: EXECUTE bevoegdheden voor het geregistreerde model, plus USE SCHEMA bevoegdheden USE CATALOG voor het schema en de catalogus met het model.

Machtigingen beheren voor de schema's, tabellen en volumes in een Delta Sharing-catalogus

De maker van de catalogus is standaard de eigenaar van alle gegevensobjecten onder een Delta Sharing-catalogus en kan machtigingen voor elk van deze objecten beheren.

Bevoegdheden worden naar beneden overgenomen, hoewel sommige werkruimten mogelijk nog steeds in het verouderde beveiligingsmodel staan dat geen overname heeft geboden. Zie overnamemodel. Elke gebruiker die de SELECT bevoegdheid voor de catalogus heeft verleend, heeft de SELECT bevoegdheid voor alle schema's en tabellen in de catalogus, tenzij die bevoegdheid wordt ingetrokken. Op dezelfde manier heeft elke gebruiker die de READ VOLUME bevoegdheid voor de catalogus heeft verleend, de READ VOLUME bevoegdheid voor alle volumes in de catalogus, tenzij die bevoegdheid wordt ingetrokken. U kunt geen bevoegdheden verlenen die schrijf- of updatetoegang verlenen tot een Delta Sharing-catalogus of -objecten in een Delta Sharing-catalogus.

De eigenaar van de catalogus kan het eigendom van gegevensobjecten delegeren aan andere gebruikers of groepen, waardoor deze gebruikers de mogelijkheid hebben om de objectmachtigingen en levenscyclus te beheren.

Zie Bevoegdheden beheren in Unity Catalog voor gedetailleerde informatie over het beheren van bevoegdheden voor gegevensobjecten met behulp van Unity Catalog.

Gegevens lezen in een gedeelde tabel

U kunt gegevens in een gedeelde tabel lezen met behulp van een van de hulpprogramma's die voor u beschikbaar zijn als azure Databricks-gebruiker: Catalog Explorer, notebooks, SQL-query's, de Databricks CLI en Databricks REST API's. U moet de SELECT bevoegdheid voor de tabel hebben.

Gegevens lezen in een gedeeld volume

U kunt gegevens in een gedeeld volume lezen met behulp van een van de hulpprogramma's die voor u beschikbaar zijn als Azure Databricks-gebruiker: Catalog Explorer, notebooks, SQL-query's, de Databricks CLI en Databricks REST API's. U moet over de READ VOLUME bevoegdheid op het volume beschikken.

Een gedeeld model laden voor deductie

Zie Modellen laden voor deductie voor meer informatie over het laden van een gedeeld model en het gebruik ervan voor batchdeductie.

Query's uitvoeren op de geschiedenisgegevens van een tabel

Als de geschiedenis samen met de tabel wordt gedeeld, kunt u een query uitvoeren op de tabelgegevens vanaf een versie of tijdstempel. Vereist Databricks Runtime 12.2 LTS of hoger.

Voorbeeld:

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";

Als de wijzigingengegevensfeed (CDF) is ingeschakeld met de tabel, kunt u bovendien een query uitvoeren op het CDF. Zowel versie als tijdstempel worden ondersteund:

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");

Zie Delta Lake-wijzigingenfeed gebruiken voor Azure Databricks voor meer informatie over wijzigingenfeeds.

Een query uitvoeren op een tabel met apache Spark Structured Streaming

Als een tabel wordt gedeeld met de geschiedenis, kunt u deze gebruiken als bron voor Spark Structured Streaming. Vereist Databricks Runtime 12.2 LTS of hoger.

Ondersteunde opties:

  • ignoreDeletes: Transacties negeren die gegevens verwijderen.
  • ignoreChanges: Updates opnieuw verwerken als bestanden zijn herschreven in de brontabel vanwege een bewerking voor het wijzigen van gegevens, zoals UPDATE, MERGE INTODELETE (binnen partities) of OVERWRITE. Ongewijzigde rijen kunnen nog steeds worden verzonden. Daarom moeten uw downstreamgebruikers dubbele waarden kunnen verwerken. Verwijderingen worden niet downstream doorgegeven. ignoreChanges ondergaat ignoreDeletes. Als u deze gebruikt ignoreChanges, wordt uw stream daarom niet onderbroken door verwijderingen of updates van de brontabel.
  • startingVersion: De versie van de gedeelde tabel waaruit moet worden gestart. Alle tabelwijzigingen vanaf deze versie (inclusief) worden gelezen door de streamingbron.
  • startingTimestamp: het tijdstempel waaruit moet worden gestart. Alle tabelwijzigingen die zijn doorgevoerd op of na de tijdstempel (inclusief) worden gelezen door de streamingbron. Voorbeeld: "2023-01-01 00:00:00.0"
  • maxFilesPerTrigger: Het aantal nieuwe bestanden dat in elke microbatch moet worden overwogen.
  • maxBytesPerTrigger: De hoeveelheid gegevens die in elke microbatch wordt verwerkt. Met deze optie stelt u een 'voorlopig maximum' in, wat betekent dat een batch ongeveer deze hoeveelheid gegevens verwerkt en meer dan de limiet kan verwerken om de streamingquery verder te laten gaan in gevallen waarin de kleinste invoereenheid groter is dan deze limiet.
  • readChangeFeed: Stream leest de wijzigingengegevensfeed van de gedeelde tabel.

Niet-ondersteunde opties:

  • Trigger.availableNow

Voorbeeldquery's voor gestructureerd streamen

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")

Als wijzigingenfeed (CDF) is ingeschakeld met de tabel, kunt u het CDF streamen.

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

Tabellen lezen waarvoor verwijderingsvectoren of kolomtoewijzing is ingeschakeld

Belangrijk

Deze functie is beschikbaar als openbare preview.

Verwijderingsvectoren zijn een functie voor opslagoptimalisatie die uw provider kan inschakelen voor gedeelde Delta-tabellen. Zie Wat zijn verwijderingsvectoren?

Azure Databricks ondersteunt ook kolomtoewijzing voor Delta-tabellen. Zie De naam van kolommen wijzigen en neerzetten met delta lake-kolomtoewijzing.

Als uw provider een tabel heeft gedeeld met verwijderingsvectoren of kolomtoewijzing ingeschakeld, kunt u batchleesbewerkingen op de tabel uitvoeren met behulp van een SQL-warehouse of een cluster waarop Databricks Runtime 14.1 of hoger wordt uitgevoerd. Voor CDF- en streamingquery's is Databricks Runtime 14.2 of hoger vereist.

U kunt batchquery's als zodanig uitvoeren, omdat ze automatisch kunnen worden omgezet responseFormat op basis van de tabelfuncties van de gedeelde tabel.

Als u een CDF (Change Data Feed) wilt lezen of streamingquery's wilt uitvoeren op gedeelde tabellen waarvoor verwijderingsvectoren of kolomtoewijzing zijn ingeschakeld, moet u de extra optie responseFormat=deltainstellen.

In de volgende voorbeelden ziet u batch-, CDF- en streamingquery's:

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>)

Gedeelde weergaven lezen

Belangrijk

Deze functie is beschikbaar als openbare preview.

Notitie

Delen van weergaven wordt alleen ondersteund in het delen van Databricks-naar-Databricks.

Het lezen van gedeelde weergaven is hetzelfde als het lezen van gedeelde tabellen, met deze uitzonderingen:

Rekenvereisten:

  • Als uw Azure Databricks-account verschilt van de provider, moet u een serverloze SQL-warehouse gebruiken om een query uit te voeren op gedeelde weergaven.
  • Als de provider zich in hetzelfde Azure Databricks-account bevindt, kunt u elk SQL-warehouse gebruiken en ook een cluster gebruiken dat gebruikmaakt van de modus voor gedeelde toegang.

Beperkingen voor weergaven:

U kunt geen weergaven maken die verwijzen naar gedeelde weergaven.

Beperkingen voor delen weergeven:

U kunt geen weergaven delen die verwijzen naar gedeelde tabellen of gedeelde weergaven.

Naamgevingsvereisten:

De catalogusnaam die u gebruikt voor de gedeelde catalogus die de weergave bevat, mag niet hetzelfde zijn als een providercatalogus die een tabel bevat waarnaar wordt verwezen door de weergave. Als de gedeelde weergave bijvoorbeeld is opgenomen in uw test catalogus en een van de tabellen van de provider waarnaar in die weergave wordt verwezen, is opgenomen in de catalogus van test de provider, resulteert de query in een conflict met de naamruimte. Zie Een catalogus maken op basis van een share.

Geschiedenis en streaming:

U kunt geen querygeschiedenis uitvoeren of een weergave gebruiken als streamingbron.

JDBC/ODBC:

De instructies in dit artikel zijn gericht op het lezen van gedeelde gegevens met behulp van Azure Databricks-gebruikersinterfaces, met name de syntaxis en interfaces van Unity Catalog. U kunt ook query's uitvoeren op gedeelde weergaven met apache Spark-, Python- en BI-hulpprogramma's zoals Tableau en Power BI met behulp van Databricks JDBC/ODBC-stuurprogramma's. Zie Databricks ODBC- en JDBC-stuurprogramma's voor meer informatie over verbinding maken met behulp van de Databricks JDBC-/ODBC-stuurprogramma's.

Gedeelde notitieblokken lezen

Als u gedeelde notitieblokbestanden wilt bekijken en klonen, kunt u Catalog Explorer gebruiken.

Vereiste machtigingen: cataloguseigenaar of gebruiker met de USE CATALOG bevoegdheid voor de catalogus die is gemaakt op basis van de share.

  1. Klik in uw Azure Databricks-werkruimte op CataloguspictogramCatalogus.

  2. Vouw in het linkerdeelvenster het menu Catalogus uit, zoek en selecteer de catalogus die is gemaakt op basis van de share.

  3. Op het tabblad Overige assets ziet u gedeelde notitieblokbestanden.

  4. Klik op de naam van een gedeeld notitieblokbestand om een voorbeeld ervan te bekijken.

  5. (Optioneel) Klik op de knop Klonen om het gedeelde notitieblokbestand naar uw werkruimte te importeren.

    1. Voer in het dialoogvenster Klonen naar (optioneel) een nieuwe naam in en selecteer vervolgens de werkruimtemap waarnaar u het notebookbestand wilt klonen.
    2. Klik op Klonen.
    3. Zodra het notitieblok is gekloond, verschijnt er een dialoogvenster om u te laten weten dat het is gekloond. Klik in de notitieblokeditor in het dialoogvenster om het weer te geven in de notitieblokeditor.

    Zie Inleiding tot Databricks-notebooks.