Condividi tramite


Leggere i dati condivisi usando Delta Sharing da Databricks a Databricks (per destinatari)

Questo articolo descrive come leggere i dati che sono stati condivisi con voi utilizzando il protocollo di Delta Sharing da Databricks a Databricks, in cui Databricks gestisce una connessione sicura per la condivisione dei dati. A differenza del protocollo di condivisione aperta di Delta Sharing, il protocollo da Databricks a Databricks non richiede un file di credenziali (sicurezza basata su token).

La condivisione da Databricks a Databricks richiede che il destinatario abbia accesso a un'area di lavoro di Databricks abilitata per Unity Catalog.

Se non si dispone di un'area di lavoro di Databricks abilitata per Unity Catalog, i dati devono essere condivisi con l'utente tramite il protocollo di condivisione aperta di Delta Sharing e dunque non è possibile applicare il contenuto di questo articolo. Vedere Leggere i dati condivisi usando la condivisione aperta di Delta Sharing (per i destinatari).

Come fare per rendere disponibili al team i dati condivisi?

Per leggere i dati e i notebook condivisi con l'utente tramite il protocollo da Databricks a Databricks, è necessario essere un utente di un'area di lavoro di Databricks abilitata per Unity Catalog. Un membro del team comunica al fornitore di dati un identificatore univoco per il metastore Unity Catalog e il fornitore di dati utilizza questo identificatore per creare una connessione di condivisione sicura con l'organizzazione. I dati condivisi diventano allora disponibili per l'accesso in lettura nell'area di lavoro e tutti gli aggiornamenti apportati dal fornitore di dati alle tabelle, alle viste, ai volumi e alle partizioni condivise si riversano nell'area di lavoro in tempo quasi reale.

Nota

Gli aggiornamenti alle tabelle, alle viste e ai volumi di dati condivisi vengono visualizzati nell'area di lavoro in tempo quasi reale. Tuttavia, le modifiche alle colonne (aggiunta, ridenominazione, eliminazione) potrebbero non apparire in Esplora cataloghi per un tempo massimo di un minuto. Allo stesso modo, le nuove condivisioni e gli aggiornamenti delle condivisioni (come l'aggiunta di nuove tabelle a una condivisione) vengono memorizzati nella cache per un minuto prima di essere disponibili per la visualizzazione e l’esecuzione di query.

Per leggere i dati condivisi con l'utente:

  1. Un utente del team trova la condivisione - il contenitore delle tabelle, delle viste, dei volumi e dei notebook condivisi con l'utente - e la usa per creare un catalogo - ovvero il contenitore di primo livello per tutti i dati in Databricks Unity Catalog.
  2. Un utente del team concede o nega l'accesso al catalogo e agli oggetti all'interno del catalogo (schemi, tabelle, viste e volumi) ad altri membri del team.
  3. I dati delle tabelle, delle viste e dei volumi a cui è stato concesso l'accesso vengono letti come qualsiasi altra risorsa di dati in Databricks a cui si ha accesso in sola lettura (SELECT o READ VOLUME).
  4. È possibile visualizzare in anteprima e clonare i notebook nella condivisione, purché si disponga del privilegio USE CATALOG per il catalogo.

Autorizzazioni obbligatorie

Per poter elencare e visualizzare i dettagli su tutti i provider e le condivisioni provider, è necessario essere un amministratore del metastore o avere il privilegio USE PROVIDER. Gli altri utenti hanno accesso solo ai provider e alle condivisioni di cui sono proprietari.

Per creare un catalogo da una condivisione di provider, è necessario essere un amministratore di metastore, un utente che abbia i privilegi CREATE_CATALOG e USE PROVIDER per il metastore Unity Catalog o un utente che abbia sia il privilegio CREATE_CATALOG sia la proprietà dell'oggetto provider.

La possibilità di concedere l'accesso in sola lettura agli schemi (database), alle tabelle, alle viste e ai volumi del catalogo creato dalla condivisione segue la gerarchia di privilegi tipica di Unity Catalog. La possibilità di visualizzare i notebook nel catalogo creato dalla condivisione richiede il privilegio USE CATALOG nel catalogo. Vedere Gestione delle autorizzazioni per gli schemi, le tabelle e i volumi in un catalogo Delta Sharing.

Visualizzare provider e condivisioni

Per iniziare a leggere i dati condivisi da un fornitore di dati, è necessario conoscere il nome del fornitore e gli oggetti di condivisione memorizzati nel metastore Unity Catalog, una volta che il fornitore abbia condiviso i dati con l'utente.

L'oggetto provider rappresenta il metastore Unity Catalog, la piattaforma cloud e la regione dell'organizzazione che ha condiviso i dati con l'utente.

L'oggetto condivisione rappresenta le tabelle, i volumi e le visualizzazioni condivisi dal provider.

Visualizzare tutti i provider che hanno condiviso i dati con l'utente

Per visualizzare un elenco dei provider di dati disponibili, è possibile usare Esplora Catalog, la CLI di Databricks Unity Catalog, o il comando SQL SHOW PROVIDERS in un notebook di Azure Databricks o nell'editor di query SQL di Databricks.

Autorizzazioni necessarie: è necessario essere un amministratore del metastore o avere il privilegio USE PROVIDER. Gli altri utenti hanno accesso solo ai provider e alle condivisioni di cui sono proprietari.

Per informazioni dettagliate, vedere Visualizzare i provider.

Visualizzare i dettagli del provider

Per visualizzare i dettagli di un provider, è possibile usare Esplora Catalog, la CLI di Databricks Unity Catalog, o il comando SQL DESCRIBE PROVIDER in un notebook di Azure Databricks o nell'editor di query SQL di Databricks.

Autorizzazioni necessarie: è necessario essere un amministratore del metastore, avere il privilegio USE PROVIDER o possedere l’oggetto provider.

Per informazioni dettagliate, vedere Visualizzare i dettagli del provider.

Visualizzare le condivisioni

Per visualizzare le condivisioni che un provider ha effettuato con l'utente, è possibile usare Esplora Catalog, la CLI di Databricks Unity Catalog, o il comando SQL SHOW SHARES IN PROVIDER in un notebook di Azure Databricks o nell'editor di query SQL di Databricks.

Autorizzazioni necessarie: è necessario essere un amministratore del metastore, avere il privilegio USE PROVIDER o possedere l’oggetto provider.

Per informazioni dettagliate, vedere Visualizzare le condivisioni effettuate da un provider con l’utente.

Accedere ai dati in una tabella o un volume condiviso

Per leggere i dati in una tabella o un volume condiviso:

  1. Un utente con privilegi deve creare un catalogo dalla condivisione che contiene la tabella o il volume. Può essere un amministratore di metastore, un utente che abbia i privilegi CREATE_CATALOG e USE PROVIDER per il metastore Unity Catalog o un utente che abbia sia il privilegio CREATE_CATALOG sia la proprietà dell'oggetto provider.
  2. L'utente o un utente con gli stessi privilegi deve concedere l'accesso alla tabella o al volume condiviso.
  3. È possibile accedere alla tabella o al volume come a qualsiasi altra risorsa di dati registrata nel metastore Unity Catalog.

Creare un catalogo da una condivisione

Per rendere i dati in una condivisione accessibile al team, è necessario creare un catalogo dalla condivisione. Per creare un catalogo da una condivisione, è possibile usare Esplora Catalog, la CLI di Databricks Unity Catalog, o i comandi SQL in un notebook di Azure Databricks o nell'editor di query SQL di Databricks.

Autorizzazioni obbligatorie: un amministratore di metastore, un utente che abbia i privilegi CREATE_CATALOG e USE PROVIDER per il metastore Unity Catalog o un utente che abbia sia il privilegio CREATE_CATALOG sia la proprietà dell'oggetto provider.

Nota

Se la condivisione include delle viste, è necessario utilizzare un nome di catalogo diverso dal nome del catalogo che contiene la vista nel metastore del provider.

Esplora cataloghi

  1. Nell'area di lavoro di Azure Databricks fare clic su Icona catalogo Catalogo per aprire Esplora cataloghi.

  2. Nella parte superiore del riquadro Catalogo fare clic sull'icona forma di ingranaggio Icona a forma di ingranaggio e selezionare condivisione delta.

    In alternativa, nella pagina Accesso rapido fare clic sul pulsante condivisione delta >.

  3. Nella scheda Condivisi con me trovare e selezionare il provider.

  4. Nella scheda Condivisioni trovare la condivisione e fare clic su Crea catalogo nella riga di condivisione.

  5. Immettere un nome per il catalogo e il commento facoltativo.

  6. Cliccare su Crea.

In alternativa, quando si apre Esplora cataloghi, per creare un catalogo condiviso è possibile fare clic su Crea catalogo in alto a destra. Vedere Creare cataloghi.

SQL

Eseguire il seguente comando in un notebook o nell'editor di query SQL di 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>

Il catalogo creato da una condivisione ha un tipo di catalogo di Delta Sharing. È possibile visualizzare il tipo nella pagina dei dettagli del catalogo in Esplora cataloghi o eseguendo il comando DESCRIBE CATALOG SQL in un notebook o in una query Databricks SQL. Tutti i cataloghi condivisi sono elencati in Catalogo > condiviso nel riquadro a sinistra di Esplora cataloghi.

Un catalogo Delta Sharing può essere gestito come i normali cataloghi su un metastore Unity Catalog. È possibile visualizzare, aggiornare ed eliminare un catalogo Delta Sharing utilizzando Esplora cataloghi, l'interfaccia della riga di comando di Databricks e i comandi SQL SHOW CATALOGS, DESCRIBE CATALOG, ALTER CATALOG e DROP CATALOG.

La struttura dello spazio dei nomi a 3 livelli in un catalogo Delta Sharing creato da una condivisione è uguale a quella di un normale catalogo su Unity Catalog: catalog.schema.table o catalog.schema.volume.

I dati di tabella e volume in un catalogo condiviso sono di sola lettura, il che significa che è possibile eseguire operazioni di lettura come:

  • DESCRIBE, SHOW e SELECT per le tabelle.
  • DESCRIBE VOLUME, LIST <volume-path>, SELECT * FROM <format>.'<volume_path>' e COPY INTO per i volumi.

I notebook in un catalogo condiviso possono essere visualizzati in anteprima e clonati da qualsiasi utente con USE CATALOG nel catalogo.

I modelli in un catalogo condiviso possono essere letti e caricati per l'inferenza da qualsiasi utente con i seguenti privilegi: privilegio EXECUTE sul modello registrato, più i privilegi USE SCHEMA e USE CATALOG sullo schema e sul catalogo che contengono il modello.

Gestione delle autorizzazioni per gli schemi, le tabelle e i volumi in un catalogo Delta Sharing

Per impostazione predefinita, l'autore del catalogo è il proprietario di tutti gli oggetti dati di un catalogo Delta Sharing e può gestire le autorizzazioni per ognuno di essi.

I privilegi sono ereditati verso il basso, anche se in alcune aree di lavoro potrebbe essere ancora presente il modello di sicurezza precedente che non prevedeva l'ereditarietà. Vedere Modello di ereditarietà. Qualsiasi utente a cui viene concesso il privilegio SELECT sul catalogo avrà il privilegio SELECT su tutti gli schemi e le tabelle del catalogo, a meno che il privilegio non venga revocato. Analogamente, qualsiasi utente a cui viene concesso il privilegio READ VOLUME sul catalogo avrà il privilegio READ VOLUME su tutti i volumi del catalogo, a meno che il privilegio non venga revocato. Non è possibile concedere privilegi che diano accesso in scrittura o aggiornamento a un catalogo Delta Sharing o agli oggetti di un catalogo Delta Sharing.

Il proprietario del catalogo può delegare la proprietà degli oggetti dati ad altri utenti o gruppi, concedendo così a quegli utenti la possibilità di gestire le autorizzazioni e i cicli di vita degli oggetti.

Per informazioni dettagliate sulla gestione dei privilegi negli oggetti dati utilizzando Unity Catalog, vedere Gestione dei privilegi in Unity Catalog.

Leggere i dati di una tabella condivisa

È possibile leggere i dati in una tabella condivisa utilizzando uno qualsiasi degli strumenti a disposizione dell'utente di Azure Databricks: Esplora cataloghi, notebook, query SQL, interfaccia della riga di comando di Databricks e API REST di Databricks. È necessario avere il privilegio SELECT per la tabella.

Leggere i dati in un volume condiviso

È possibile leggere i dati in un volume condiviso utilizzando uno qualsiasi degli strumenti a disposizione dell'utente di Azure Databricks: Esplora cataloghi, notebook, query SQL, interfaccia della riga di comando di Databricks e API REST di Databricks. È necessario avere il privilegio READ VOLUME per il volume.

Caricare un modello condiviso per l'inferenza

Per informazioni più dettagliate sul caricamento di un modello condiviso e sul suo utilizzo per l'inferenza in batch, vedere Caricare la versione del modello per alias per i carichi di lavoro di inferenza.

Eseguire query sui dati della cronologia di una tabella

Se la cronologia è condivisa con la tabella, è possibile eseguire query sui dati della tabella in base a una versione o a un timestamp. È necessario Databricks Runtime 12.2 LTS o versione successiva.

Ad esempio:

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

Inoltre, se il feed di dati delle modifiche (CDF) è abilitato per la tabella, è possibile eseguire una query su CDF. Sono supportati sia la versione sia il timestamp:

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

Per altre informazioni sul feed di dati delle modifiche, vedere Usare il feed di dati delle modifiche Delta Lake in Azure Databricks.

Eseguire una query su una tabella utilizzando il flusso strutturato di Apache Spark

Se una tabella è condivisa con la cronologia, è possibile utilizzarla come sorgente per il flusso strutturato di Spark. È necessario Databricks Runtime 12.2 LTS o versione successiva.

Opzioni supportate:

  • ignoreDeletes: ignora le transazioni che eliminano i dati.
  • ignoreChanges: consente di rielaborare gli aggiornamenti se i file sono stati riscritti nella tabella di origine a causa di un'operazione di modifica dei dati, ad esempio UPDATE, MERGE INTO, DELETE (all'interno di partizioni) o OVERWRITE. Le righe non modificate possono comunque essere generate. Pertanto, gli utenti downstream devono essere in grado di gestire i duplicati. Le eliminazioni non vengono propagate downstream. ignoreChanges include ignoreDeletes. Pertanto, se si usa ignoreChanges, il flusso non verrà interrotto da eliminazioni o aggiornamenti alla tabella di origine.
  • startingVersion: versione della tabella condivisa da cui iniziare. Tutte le modifiche alla tabella a partire da questa versione (inclusa) saranno lette dall'origine di streaming.
  • startingTimestamp: timestamp da cui iniziare. Tutte le modifiche alla tabella apportate a partire dal timestamp (incluso) saranno lette dall'origine di streaming. Esempio: "2023-01-01 00:00:00.0"
  • maxFilesPerTrigger: numero di nuovi file da considerare in ogni micro batch.
  • maxBytesPerTrigger: quantità di dati elaborati in ogni micro batch. Questa opzione imposta un “soft max”, il che significa che un batch elabora approssimativamente questa quantità di dati e potrebbe elaborare più del limite per far avanzare la query di streaming nei casi in cui l'unità di input più piccola è più grande di questo limite.
  • readChangeFeed: Stream legge il feed di dati delle modifiche della tabella condivisa.

Opzioni non supportate:

  • Trigger.availableNow

Query di esempio per il flusso strutturato

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

Se il feed di dati delle modifiche (CDF) è abilitato per la tabella, è possibile leggere in streaming il CDF.

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

Leggere tabelle con vettori di eliminazione o mappatura delle colonne abilitati

Importante

Questa funzionalità è disponibile in anteprima pubblica.

I vettori di eliminazione sono una funzione di ottimizzazione dell'archiviazione che il provider può abilitare sulle tabelle Delta condivise. Vedere Che cosa sono i vettori di eliminazione?.

Azure Databricks supporta anche il mapping delle colonne per le tabelle Delta. Consultare Rinominare ed eliminare colonne con mapping di colonne Delta Lake.

Se il provider ha condiviso una tabella con vettori di eliminazione o mapping delle colonne abilitati, è possibile eseguire letture batch sulla tabella utilizzando un warehouse SQL o un cluster con Databricks Runtime 14.1 o versione successiva. Le query CDF e di streaming richiedono Databricks Runtime 14.2 o versione successiva.

È possibile eseguire le query batch così come sono, perché possono risolvere automaticamente responseFormat in base alle caratteristiche della tabella condivisa.

Per leggere un feed di dati delle modifiche (CDF) o per eseguire query di streaming su tabelle condivise con vettori di eliminazione o mapping di colonne abilitati, è necessario impostare l'opzione responseFormat=delta aggiuntiva.

I seguenti esempi illustrano le query batch, CDF e streaming:

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

Leggere viste condivise

Importante

Questa funzionalità è disponibile in anteprima pubblica.

Nota

La condivisione delle visualizzazioni è supportata solo nella condivisione da Databricks a Databricks.

La lettura delle visualizzazioni condivise è identica alla lettura di tabelle condivise, salvo le seguenti eccezioni:

Requisiti di calcolo:

  • Se l'account Azure Databricks è diverso da quello del provider, è necessario utilizzare un warehouse SQL Serverless per eseguire query sulle viste condivise.
  • Se il provider è sullo stesso account Azure Databricks, è possibile utilizzare qualsiasi warehouse SQL e anche un cluster che utilizza la modalità di accesso condiviso.

Restrizioni di vista su vista:

Non è possibile creare viste che fanno riferimento a viste condivise.

Restrizioni alla condivisione di viste:

Non è possibile condividere viste che fanno riferimento a tabelle o viste condivise.

Requisiti per la denominazione:

Il nome del catalogo utilizzato per il catalogo condiviso che contiene la vista non può essere lo stesso del catalogo del provider che contiene una tabella a cui la vista fa riferimento. Ad esempio, se la vista condivisa è contenuta nel catalogo test dell’utente e una delle tabelle del provider a cui fa riferimento la vista è contenuta nel catalogo test del provider, la query produrrà un errore di conflitto di spazi dei nomi. Vedere Creare un catalogo da una condivisione.

Cronologia e streaming:

Non è possibile eseguire query sulla cronologia o usare una vista come origine di streaming.

JDBC/ODBC:

Le istruzioni riportate in questo articolo si concentrano sulla lettura dei dati condivisi utilizzando le interfacce utente di Azure Databricks, in particolare la sintassi e le interfacce di Unity Catalog. È inoltre possibile eseguire query sulle viste condivise utilizzando Apache Spark, Python e strumenti di BI come Tableau e Power BI grazie ai driver JDBC/ODBC di Databricks. Per informazioni su come connettersi usando i driver JDBC/ODBC di Databricks, vedere Driver ODBC e JDBC di Databricks.

Leggere i notebook condivisi

Per visualizzare in anteprima e clonare file di notebook condivisi, è possibile usare Esplora cataloghi.

Autorizzazioni necessarie: proprietario del catalogo o utente con il privilegio USE CATALOG per il catalogo creato dalla condivisione.

  1. Nell'area di lavoro di Azure Databricks fare clic su Icona catalogo Catalogo.

  2. Nel riquadro a sinistra, espandere il menu Catalogo, trovare e selezionare il catalogo creato dalla condivisione.

  3. Nella scheda Altre risorse verranno visualizzati tutti i file di notebook condivisi.

  4. Fare clic sul nome di un file di notebook condiviso per visualizzarlo in anteprima.

  5. (Facoltativo) Fare clic sul pulsante Clona per importare il file del notebook condiviso nell'area di lavoro.

    1. Nella finestra di dialogo Clona in immettere facoltativamente un Nuovo nome, poi selezionare la cartella dell'area di lavoro in cui clonare il file del notebook.
    2. Fare clic su Clona.
    3. Una volta che il notebook è stato clonato, viene visualizzata una finestra di dialogo per informare che la clonazione è avvenuta con successo. Fare clic su Visualizza nell'editor dei notebook nella finestra di dialogo per visualizzarla nell'editor dei notebook.

    Vedere Introduzione ai notebook di Databricks.