Läsa data som delas med Databricks-till-Databricks Delta-delning (för mottagare)
Den här artikeln beskriver hur du läser data som har delats med dig med hjälp av Databricks-till-Databricks Delta Sharing-protokollet, där Databricks hanterar en säker anslutning för datadelning. Till skillnad från protokollet deltadelning för öppen delning kräver Databricks-till-Databricks-protokollet inte någon autentiseringsfil (tokenbaserad säkerhet).
Databricks-till-Databricks-delning kräver att du som mottagare har åtkomst till en Databricks-arbetsyta som är aktiverad för Unity Catalog.
Om du inte har en Databricks-arbetsyta som är aktiverad för Unity Catalog måste data delas med dig med hjälp av deltadelningsprotokollet för öppen delning, och den här artikeln gäller inte för dig. Se Läsa data som delas med deltadelning för öppen delning (för mottagare).
Hur gör jag för att göra delade data tillgängliga för mitt team?
Om du vill läsa data och notebook-filer som har delats med dig med hjälp av Databricks-till-Databricks-protokollet måste du vara en användare på en Databricks-arbetsyta som är aktiverad för Unity Catalog. En medlem i ditt team ger dataleverantören en unik identifierare för ditt Unity Catalog-metaarkiv, och dataprovidern använder den identifieraren för att skapa en säker delningsanslutning till din organisation. Delade data blir sedan tillgängliga för läsåtkomst på din arbetsyta och alla uppdateringar som dataleverantören gör till delade tabeller, vyer, volymer och partitioner återspeglas i din arbetsyta nästan i realtid.
Kommentar
Uppdateringar av delade datatabeller, vyer och volymer visas i din arbetsyta nästan i realtid. Kolumnändringar (lägga till, byta namn på, ta bort) kanske inte visas i Katalogutforskaren på upp till en minut. På samma sätt cachelagras nya resurser och uppdateringar av resurser (till exempel att lägga till nya tabeller i en resurs) i en minut innan de är tillgängliga för dig att visa och fråga.
Så här läser du data som har delats med dig:
- En användare i ditt team hittar resursen – containern för tabeller, vyer, volymer och notebook-filer som har delats med dig – och använder resursen för att skapa en katalog – den översta containern för alla data i Databricks Unity Catalog.
- En användare i ditt team beviljar eller nekar åtkomst till katalogen och objekten i katalogen (scheman, tabeller, vyer och volymer) till andra medlemmar i ditt team.
- Du läser data i tabeller, vyer och volymer som du har beviljats åtkomst till precis som andra datatillgånger i Databricks som du har skrivskyddad (
SELECT
ellerREAD VOLUME
) åtkomst till. - Du förhandsgranskar och klonar notebook-filer i resursen så länge du har behörigheten
USE CATALOG
i katalogen.
Behörigheter som krävs
För att kunna lista och visa information om alla providers och providerresurser måste du vara metaarkivadministratör eller ha behörigheten USE PROVIDER
. Andra användare har endast åtkomst till de leverantörer och resurser som de äger.
Om du vill skapa en katalog från en providerresurs måste du vara metaarkivadministratör, en användare som har både behörigheterna CREATE_CATALOG
och USE PROVIDER
för unity-katalogmetaarkivet eller en användare som har både CREATE_CATALOG
behörighet och ägarskap för providerobjektet.
Möjligheten att bevilja skrivskyddad åtkomst till scheman (databaser), tabeller, vyer och volymer i katalogen som skapats från resursen följer den typiska behörighetshierarkin i Unity Catalog. Möjligheten att visa notebook-filer i katalogen som skapats från resursen kräver behörigheten USE CATALOG
för katalogen. Se Hantera behörigheter för scheman, tabeller och volymer i en deltadelningskatalog.
Visa leverantörer och resurser
Om du vill börja läsa de data som har delats med dig av en dataprovider måste du känna till namnet på providern och dela objekt som lagras i Unity Catalog-metaarkivet när providern har delat data med dig.
Providerobjektet representerar Unity Catalog-metaarkivet, molnplattformen och regionen för den organisation som delade data med dig.
Resursobjektet representerar de tabeller, volymer och vyer som providern har delat med dig.
Visa alla leverantörer som har delat data med dig
Om du vill visa en lista över tillgängliga dataprovidrar kan du använda Catalog Explorer, Databricks Unity Catalog CLI eller SHOW PROVIDERS
SQL-kommandot i en Azure Databricks-anteckningsbok eller Databricks SQL-frågeredigeraren.
Behörigheter som krävs: Du måste vara administratör för metaarkivet eller ha behörigheten USE PROVIDER
. Andra användare har endast åtkomst till de leverantörer och providerresurser som de äger.
Mer information finns i Visa providers.
Visa providerinformation
Om du vill visa information om en provider kan du använda Catalog Explorer, Databricks Unity Catalog CLI eller DESCRIBE PROVIDER
SQL-kommandot i en Azure Databricks-notebook-fil eller Databricks SQL-frågeredigeraren.
Behörigheter som krävs: Du måste vara metaarkivadministratör, ha behörigheten USE PROVIDER
eller äga providerobjektet.
Mer information finns i Visa providerinformation.
Visa resurser
Om du vill visa de resurser som en provider har delat med dig kan du använda Catalog Explorer, Databricks Unity Catalog CLI eller SHOW SHARES IN PROVIDER
SQL-kommandot i en Azure Databricks-notebook-fil eller Databricks SQL-frågeredigeraren.
Behörigheter som krävs: Du måste vara metaarkivadministratör, ha behörigheten USE PROVIDER
eller äga providerobjektet.
Mer information finns i Visa resurser som en provider har delat med dig.
Komma åt data i en delad tabell eller volym
Så här läser du data i en delad tabell eller volym:
- En privilegierad användare måste skapa en katalog från resursen som innehåller tabellen eller volymen. Detta kan vara en metaarkivadministratör, en användare som har både behörigheterna
CREATE_CATALOG
ochUSE PROVIDER
för ditt Unity Catalog-metaarkiv eller en användare som har bådeCREATE_CATALOG
behörighet och ägarskap för providerobjektet. - Den användaren eller en användare med samma behörighet måste ge dig åtkomst till den delade tabellen eller volymen.
- Du kan komma åt tabellen eller volymen på samma sätt som andra datatillgånger som är registrerade i unity-katalogens metaarkiv.
Skapa en katalog från en resurs
Om du vill göra data i en resurs tillgängliga för ditt team måste du skapa en katalog från resursen. Om du vill skapa en katalog från en resurs kan du använda Catalog Explorer, Databricks Unity Catalog CLI eller SQL-kommandon i en Azure Databricks-notebook-fil eller Databricks SQL-frågeredigeraren.
Behörigheter som krävs: En metaarkivadministratör, en användare som har både behörigheterna CREATE_CATALOG
och USE PROVIDER
för ditt Unity Catalog-metaarkiv eller en användare som har både CREATE_CATALOG
behörighet och ägarskap för providerobjektet.
Kommentar
Om resursen innehåller vyer måste du använda ett katalognamn som skiljer sig från namnet på katalogen som innehåller vyn i providerns metaarkiv.
Katalogutforskaren
På din Azure Databricks-arbetsyta klickar du på Katalog för att öppna Katalogutforskaren.
Längst upp i fönstret Katalog klickar du på kugghjulsikonen och väljer Deltadelning.
Du kan också klicka på knappen Deltadelning > på sidan Snabbåtkomst.
På fliken Delat med mig letar du upp och väljer providern.
På fliken Resurser letar du upp resursen och klickar på Skapa katalog på resursraden.
Ange ett namn för katalogen och valfri kommentar.
Klicka på Skapa.
När du öppnar Katalogutforskaren kan du också klicka på Skapa katalog uppe till höger för att skapa en delad katalog. Se Skapa kataloger.
SQL
Kör följande kommando i en notebook-fil eller Databricks SQL-frågeredigeraren.
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>
Katalogen som skapats från en resurs har en katalogtyp för Deltadelning. Du kan visa typen på sidan kataloginformation i Katalogutforskaren eller genom att köra kommandot DESCRIBE CATALOG SQL i en notebook- eller Databricks SQL-fråga. Alla delade kataloger visas under Katalogdelad > i fönstret Katalogutforskaren till vänster.
En deltadelningskatalog kan hanteras på samma sätt som vanliga kataloger i ett Unity Catalog-metaarkiv. Du kan visa, uppdatera och ta bort en deltadelningskatalog med hjälp av Catalog Explorer, Databricks CLI och med hjälp SHOW CATALOGS
av kommandona , DESCRIBE CATALOG
, ALTER CATALOG
och DROP CATALOG
SQL.
Namnområdesstrukturen på 3 nivåer under en deltadelningskatalog som skapats från en resurs är densamma som den under en vanlig katalog i Unity Catalog: catalog.schema.table
eller catalog.schema.volume
.
Tabell- och volymdata under en delad katalog är skrivskyddade, vilket innebär att du kan utföra läsåtgärder som:
DESCRIBE
,SHOW
ochSELECT
för tabeller.DESCRIBE VOLUME
,LIST <volume-path>
,SELECT * FROM <format>.'<volume_path>'
ochCOPY INTO
för volymer.
Notebook-filer i en delad katalog kan förhandsgranskas och klonas av alla användare med USE CATALOG
i katalogen.
Modeller i en delad katalog kan läsas och läsas in för slutsatsdragning av alla användare med följande behörigheter: EXECUTE
behörighet för den registrerade modellen samt USE SCHEMA
USE CATALOG
behörigheter för schemat och katalogen som innehåller modellen.
Hantera behörigheter för scheman, tabeller och volymer i en deltadelningskatalog
Som standard är katalogskaparen ägare till alla dataobjekt under en deltadelningskatalog och kan hantera behörigheter för någon av dem.
Behörigheter ärvs nedåt, även om vissa arbetsytor fortfarande finns på den äldre säkerhetsmodellen som inte gav arv. Se Arvsmodell. Alla användare som beviljats behörigheten SELECT
i katalogen har behörighet för SELECT
alla scheman och tabeller i katalogen om inte behörigheten återkallas. På samma sätt har alla användare som beviljats READ VOLUME
behörigheten i katalogen behörighet för READ VOLUME
alla volymer i katalogen om inte behörigheten återkallas. Du kan inte bevilja behörigheter som ger skriv- eller uppdateringsåtkomst till en deltadelningskatalog eller objekt i en deltadelningskatalog.
Katalogägaren kan delegera ägarskapet för dataobjekt till andra användare eller grupper, vilket ger dessa användare möjlighet att hantera objektbehörigheter och livscykeln.
Detaljerad information om hur du hanterar behörigheter för dataobjekt med hjälp av Unity Catalog finns i Hantera privilegier i Unity Catalog.
Läsa data i en delad tabell
Du kan läsa data i en delad tabell med något av de verktyg som är tillgängliga för dig som Azure Databricks-användare: Catalog Explorer, notebook-filer, SQL-frågor, Databricks CLI och Databricks REST-API:er. Du måste ha behörigheten SELECT
i tabellen.
Läsa data på en delad volym
Du kan läsa data i en delad volym med något av de verktyg som är tillgängliga för dig som Azure Databricks-användare: Catalog Explorer, notebook-filer, SQL-frågor, Databricks CLI och Databricks REST-API:er. Du måste ha behörigheten READ VOLUME
på volymen.
Läsa in en delad modell för slutsatsdragning
Mer information om hur du läser in en delad modell och använder den för batchinferens finns i Läsa in modellversion efter alias för slutsatsdragningsarbetsbelastningar.
Fråga efter en tabells historikdata
Om historiken delas tillsammans med tabellen kan du fråga tabelldata från och med en version eller tidsstämpel. Kräver Databricks Runtime 12.2 LTS eller senare.
Till exempel:
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";
Om ändringsdataflödet (CDF) dessutom är aktiverat med tabellen kan du fråga CDF. Både version och tidsstämpel stöds:
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");
Mer information om ändringsdataflöde finns i Använda Delta Lake-ändringsdataflöde i Azure Databricks.
Köra frågor mot en tabell med Apache Spark Structured Streaming
Om en tabell delas med historik kan du använda den som källa för Spark Structured Streaming. Kräver Databricks Runtime 12.2 LTS eller senare.
Alternativ som stöds:
ignoreDeletes
: Ignorera transaktioner som tar bort data.ignoreChanges
: Bearbeta uppdateringar igen om filer skrevs om i källtabellen på grund av en dataförändringsåtgärd somUPDATE
,MERGE INTO
,DELETE
(inom partitioner) ellerOVERWRITE
. Oförändrade rader kan fortfarande genereras. Därför bör nedströmskonsumenterna kunna hantera dubbletter. Borttagningar sprids inte nedströms.ignoreChanges
undersummorignoreDeletes
. Om du använderignoreChanges
störs därför inte dataströmmen av borttagningar eller uppdateringar av källtabellen.startingVersion
: Den delade tabellversion som ska startas från. Alla tabelländringar från och med den här versionen (inklusive) kommer att läsas av strömningskällan.startingTimestamp
: Tidsstämpeln som ska startas från. Alla tabelländringar som har checkats in vid eller efter tidsstämpeln (inklusive) kommer att läsas av strömningskällan. Exempel:"2023-01-01 00:00:00.0"
maxFilesPerTrigger
: Antalet nya filer som ska beaktas i varje mikrobatch.maxBytesPerTrigger
: Mängden data som bearbetas i varje mikrobatch. Det här alternativet anger ett "mjukt maxvärde", vilket innebär att en batch bearbetar ungefär den här mängden data och kan bearbeta mer än gränsen för att få strömningsfrågan att gå framåt i de fall då den minsta indataenheten är större än den här gränsen.readChangeFeed
: Stream läser ändringsdataflödet för den delade tabellen.
Alternativ som inte stöds:
Trigger.availableNow
Exempel på strukturerade strömningsfrågor
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")
Om ändringsdataflöde (CDF) är aktiverat med tabellen kan du strömma läsningen av CDF.
spark.readStream.format("deltaSharing")
.option("readChangeFeed", "true")
.table("vaccine.vaccine_us.vaccine_us_distribution")
Läs tabeller med borttagningsvektorer eller kolumnmappning aktiverat
Viktigt!
Den här funktionen finns som allmänt tillgänglig förhandsversion.
Borttagningsvektorer är en funktion för lagringsoptimering som leverantören kan aktivera i delade Delta-tabeller. Se Vad är borttagningsvektorer?.
Azure Databricks stöder även kolumnmappning för Delta-tabeller. Se Byt namn på och släpp kolumner med Delta Lake-kolumnmappning.
Om providern har delat en tabell med borttagningsvektorer eller kolumnmappning aktiverat kan du utföra batchläsningar i tabellen med hjälp av ett SQL-lager eller ett kluster som kör Databricks Runtime 14.1 eller senare. CDF- och strömningsfrågor kräver Databricks Runtime 14.2 eller senare.
Du kan utföra batchfrågor som de är eftersom de automatiskt kan matchas responseFormat
baserat på tabellfunktionerna i den delade tabellen.
Om du vill läsa en cdf (change data feed) eller utföra strömmande frågor på delade tabeller med borttagningsvektorer eller kolumnmappning aktiverat måste du ange det ytterligare alternativet responseFormat=delta
.
I följande exempel visas frågor om batch, CDF och strömning:
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>)
Läsa delade vyer
Viktigt!
Den här funktionen finns som allmänt tillgänglig förhandsversion.
Att läsa delade vyer är detsamma som att läsa delade tabeller, med följande undantag:
Visa delningsbegränsningar:
Du kan inte dela vyer som refererar till delade tabeller eller delade vyer.
Namngivningskrav:
Katalognamnet som du använder för den delade katalogen som innehåller vyn kan inte vara samma som någon providerkatalog som innehåller en tabell som refereras av vyn. Om den delade vyn till exempel finns i katalogen test
och en av providerns tabeller som refereras i den vyn finns i providerns test
katalog resulterar frågan i ett namnområdeskonfliktfel. Se Skapa en katalog från en resurs.
Historik och strömning:
Du kan inte köra frågor mot historiken eller använda en vy som en strömmande källa.
Visa stöd för öppen delning:
Anvisningarna i den här artikeln fokuserar på att läsa delade data med hjälp av Azure Databricks-användargränssnitt, särskilt Unity Catalog-syntax och gränssnitt. Du kan också köra frågor mot delade vyer med hjälp av Apache Spark-, Python- och BI-verktyg som Tableau och Power BI.
Kostnader:
Det finns två potentiella kostnadskällor för visningsdelning:
- Beräkningskostnad som debiteras av Databricks.
- Lagrings- och nätverksöverföringskostnad (utgående) som debiteras av lagringsleverantören.
Beräkningskostnaden baseras på typen av mottagarberäkningsresurs:
Mottagarberäkning | Vem betalar? | SKU |
---|---|---|
Databricks utan server | Mottagare | Serverlös SKU som används av mottagaren |
Databricks Classic | Mottagare | Interaktiv serverlös |
Öppna deltadelningsanslutningsprogram | Provider | Interaktiv serverlös |
Läsa delade anteckningsböcker
Om du vill förhandsgranska och klona delade notebook-filer kan du använda Katalogutforskaren.
Behörigheter som krävs: Katalogägare eller användare med behörigheten USE CATALOG
för katalogen som skapats från resursen.
På din Azure Databricks-arbetsyta klickar du på Katalog.
I den vänstra rutan expanderar du menyn Katalog , letar upp och väljer katalogen som skapats från resursen.
På fliken Andra tillgångar visas alla delade notebook-filer.
Klicka på namnet på en delad notebook-fil för att förhandsgranska den.
(Valfritt) Klicka på knappen Klona för att importera den delade notebook-filen till din arbetsyta.
- I dialogrutan Klona till kan du ange ett Nytt namn och sedan välja den arbetsytemapp som du vill klona notebook-filen till.
- Klicka på Klona.
- När notebook-filen har klonats visas en dialogruta som meddelar dig att den har klonats. Klicka på Visa i anteckningsboksredigeraren i dialogrutan för att visa den i anteckningsboksredigeraren.