Condividi tramite


Eseguire query federate in un'altra area di lavoro di Databricks

Questo articolo descrive come configurare Lakehouse Federation per eseguire query federate sui dati di Databricks in un'altra area di lavoro di Databricks. Per altre informazioni sulla federazione di lakehouse, si veda Che cos'è Lakehouse Federation?.

Importante

Databricks-to-Databricks Lakehouse Federation è uno strumento valido per l'esecuzione di query sui dati gestiti da un altro metastore Hive o AWS Glue di un'altra area di lavoro di Databricks. Per la maggior parte degli altri scenari, altri flussi di lavoro di Azure Databricks sono più efficienti:

  • Se le aree di lavoro di Azure Databricks condividono lo stesso metastore di Unity Catalog, è possibile gestire query tra aree di lavoro usando query standard di Unity Catalog e strumenti di governance dei dati.
  • Se si desidera l'accesso in sola lettura ai dati in uno workspace Databricks collegato a un metastore Unity Catalog differente, sia nel tuo account Azure Databricks che altrove, Delta Sharing è una scelta migliore.

Non è necessario configurare la federazione Lakehouse in uno di questi scenari.

Per connettersi a un catalogo di Databricks in un'altra area di lavoro usando Lakehouse Federation, è necessario creare quanto segue nel metastore del catalogo Unity di Azure Databricks:

  • Un cluster o sql warehouse in un'area di lavoro di Databricks.
  • Connessione al cluster o a SQL Warehouse.
  • Catalogo esterno nel metastore del catalogo Unity che rispecchia gli altri cataloghi di Databricks accessibili dal cluster o dal data warehouse in modo che sia possibile usare la sintassi delle query di Unity Catalog e gli strumenti di governance dei dati per gestire l'accesso degli utenti di Azure Databricks ai dati.

Operazioni preliminari

Requisiti dell'area di lavoro:

  • Area di lavoro attivata per il catalogo Unity.

Requisiti dell’ambiente di calcolo:

  • Connettività di rete dalla risorsa di calcolo ai sistemi di database di destinazione. Si veda Raccomandazioni di rete per Lakehouse Federation.
  • Il calcolo di Azure Databricks deve usare Databricks Runtime 13.3 LTS o versione successiva e standard o modalità di accesso dedicato .
  • I warehouse SQL devono essere pro o serverless e devono usare la versione 2023.40 o una versione successiva.

Autorizzazioni necessarie:

  • Per creare una connessione, è necessario essere amministratore del metastore o un utente con il privilegio CREATE CONNECTION nel metastore Unity Catalog collegato all'area di lavoro.
  • Per creare un catalogo straniero, è necessario avere il permesso CREATE CATALOG sul metastore ed essere il proprietario della connessione o avere il privilegio CREATE FOREIGN CATALOG sulla connessione.

In ogni sezione basata su attività che segue vengono specificati requisiti di autorizzazione aggiuntivi.

È anche necessario disporre di un cluster attivo o di SQL Warehouse nell'area di lavoro di Azure Databricks usata per configurare la connessione.

Crea una connessione

Una connessione specifica un percorso e le credenziali per l'accesso a un sistema di database esterno. Per creare una connessione, è possibile usare Catalog Explorer o il comando SQL CREATE CONNECTION all'interno di un notebook di Azure Databricks o nell'editor di query SQL di Databricks.

Nota

È anche possibile usare l'API REST di Databricks o l'interfaccia della riga di comando di Databricks per creare una connessione. Vedere POST /api/2.1/unity-catalog/connections e i comandi del Unity Catalog.

Autorizzazioni necessarie: amministratore o utente metastore con il privilegio CREATE CONNECTION.

Esploratore di cataloghi

  1. Nell'area di lavoro di Azure Databricks fare clic sull'icona Dati.Catalogo.

  2. Nella parte superiore del riquadro Catalogo, fare clic sull'icona Aggiungi o piùicona Aggiungi e selezionare Aggiungi una connessione dal menu.

    In alternativa, nella pagina Accesso rapido fare clic sul pulsante Dati esterni >, passare alla scheda Connessioni e fare clic su Crea connessione.

  3. Nella pagina Elementi di base della connessione della Procedura guidata di configurazione della connessione, inserisci un nome di connessione facile da usare.

  4. Selezionare un tipo di connessione di Databricks.

  5. (Facoltativo) Aggiungere un commento.

  6. Fare clic su Avanti.

  7. Nella pagina Autenticazione immettere le proprietà di connessione seguenti per l'altra istanza di Databricks:

    • Host: nome dell'istanza dell'area di lavoro. Per informazioni su come ottenere il nome dell'istanza dell'area di lavoro, vedere Ottenere gli identificatori per gli oggetti dell'area di lavoro.
    • Token di accesso personale: token di accesso personale di Azure Databricks che consente l'accesso all'area di lavoro di destinazione. Per informazioni su come ottenere un token, vedere Eseguire l'autenticazione con i token di accesso personali di Azure Databricks (legacy). Per le connessioni, Databricks consiglia di usare un token di accesso personale per un service principal.
    • Percorso HTTP: percorso HTTP per sql warehouse. Per ottenere il percorso, vai a > nel pannello laterale, seleziona il SQL Warehouse, vai alla scheda Dettagli connessione e copia il valore per il percorso HTTP.
  8. Fare clic su Crea connessione.

  9. Nella pagina Nozioni di base del catalogo immettere il nome del catalogo nell'altra area di lavoro di Azure Databricks di cui è possibile eseguire il mapping a un oggetto catalogo in questo metastore.

  10. (Facoltativo) Fare clic su Test connessione per verificare che funzioni.

  11. Fare clic su Crea Catalogo.

  12. Nella pagina Accesso selezionare le aree di lavoro in cui gli utenti possono accedere al catalogo creato. È possibile selezionare l'opzione Tutte le aree di lavoro hanno accesso, oppure fare clic su Assegna alle aree di lavoro, selezionare le aree di lavoro e quindi fare clic su Assegna.

  13. Modifica il Proprietario che potrà gestire l'accesso a tutti gli oggetti del catalogo. Iniziare a digitare un principale nella casella di testo e quindi fare clic sul principale nei risultati restituiti.

  14. Concedi privilegi sul catalogo. Fare clic su Concedi:

    1. Specificare i Principals che avranno accesso agli oggetti nel catalogo. Iniziare a digitare un principale nella casella di testo e quindi fare clic sul principale nei risultati restituiti.
    2. Selezionare i privilegi preimpostati da concedere a ciascun soggetto. A tutti gli utenti dell'account viene concesso il numero BROWSE per impostazione predefinita.
      • Selezionare Lettore dati dal menu a discesa per concedere read privilegi agli oggetti nel catalogo.
      • Selezionare Editor dati dal menu a discesa per concedere a read e modify privilegi sugli oggetti nel catalogo.
      • Selezionare manualmente i privilegi da concedere.
    3. Fare clic su "Concedi".
  15. Fare clic su Avanti.

  16. Nella pagina Metadati, specificare le coppie chiave-valore dei tag. Per ulteriori informazioni, vedere Applicare tag a oggetti proteggibili del catalogo Unity.

  17. (Facoltativo) Aggiungere un commento.

  18. Fare clic su Salva.

SQL

Eseguire il comando seguente in un notebook o nell'editor di query SQL di Databricks, sostituendo quanto segue:

  • <connection-name>: nome di facile utilizzo per la connessione che si sta creando.
  • <workspace-instance>: istanza dell'area di lavoro di destinazione. Per informazioni su come ottenere il nome dell'istanza dell'area di lavoro, vedere Ottenere gli identificatori per gli oggetti dell'area di lavoro.
  • <sql-warehouse-path>: percorso HTTP per sql warehouse. Per ottenere il percorso, vai a > nel pannello laterale, seleziona il SQL Warehouse, vai alla scheda Dettagli connessione e copia il valore per il percorso HTTP.
  • <personal-access-token>: token di accesso personale di Azure Databricks che consente l'accesso all'area di lavoro di destinazione. Per informazioni su come ottenere un token, vedere Eseguire l'autenticazione con i token di accesso personali di Azure Databricks (legacy). Per le connessioni, Databricks consiglia di usare il token di accesso personale di un'entità servizio.
CREATE CONNECTION <connection-name> TYPE databricks
OPTIONS (
  host '<workspace-instance>',
  httpPath '<sql-warehouse-path>',
  personalAccessToken '<personal-access-token>'
);

È consigliabile usare segreti di Azure Databricks anziché stringhe di testo non crittografato per valori sensibili come le credenziali. Ad esempio:

CREATE CONNECTION <connection-name> TYPE databricks
OPTIONS (
  host '<workspace-instance>',
  httpPath '<sql-warehouse-path>',
  personalAccessToken secret ('<secret-scope>','<secret-key-password>')
)

Per informazioni sulla configurazione dei segreti, vedere Gestione dei segreti.

Creare un catalogo straniero

Nota

Se si usa l'interfaccia utente per creare una connessione all'origine dati, la creazione del catalogo esterno è inclusa ed è possibile ignorare questo passaggio.

Un catalogo esterno rispecchia un catalogo nell'area di lavoro esterna di Databricks così da poter eseguire query e gestire l'accesso ai dati in quel catalogo esterno di Databricks come se fosse un catalogo nella propria area di lavoro. Per creare un catalogo esterno, usare una connessione all'area di lavoro di Databricks esterna già definita.

Per creare un catalogo esterno, è possibile usare Esplora cataloghi o il comando SQL CREATE FOREIGN CATALOG in un notebook di Azure Databricks o nell'editor di query SQL di Databricks. È anche possibile usare l'API REST di Databricks o l'interfaccia della riga di comando di Databricks per creare un catalogo. Vedi POST /api/2.1/unity-catalog/catalogs e comandi di Unity Catalog.

Autorizzazioni necessarie: autorizzazione CREATE CATALOG per il metastore e la proprietà della connessione o il privilegio CREATE FOREIGN CATALOG per la connessione.

Esploratore di cataloghi

  1. Nell'area di lavoro di Azure Databricks fare clic sull'icona Dati.Catalogo per aprire Esplora cataloghi.

  2. Nella parte superiore del riquadro Catalogo fare clic sull'icona Aggiungi o piùAggiungi e selezionare Aggiungi un catalogo dal menu.

    In alternativa, nella pagina accesso rapido fare clic sul pulsante Cataloghi e quindi sul pulsante Crea catalogo.

  3. Seguire le istruzioni per la creazione di cataloghi stranieri in Creare cataloghi.

SQL

Eseguire il comando SQL seguente in un notebook o in un editor SQL di Databricks. Gli elementi tra parentesi sono facoltativi. Sostituisci i valori segnaposto:

  • <catalog-name>: Nome del catalogo straniero che stai creando.
  • <connection-name>: oggetto connessione che specifica l'origine dati, il percorso e le credenziali di accesso.
  • <external-catalog-name>: nome del catalogo nell'area di lavoro di Databricks esterna di cui si esegue il mirroring.
CREATE FOREIGN CATALOG [IF NOT EXISTS] <catalog-name> USING CONNECTION <connection-name>
OPTIONS (catalog '<external-catalog-name>');

Pushdown supportati

I pushdown seguenti sono supportati in tutte le risorse di calcolo:

  • Filtri
  • Proiezioni
  • Limite
  • Funzioni: sono supportate solo espressioni di filtro (funzioni stringa, funzioni matematiche, dati, ora e timestamp e altre funzioni varie, ad esempio Alias, Cast, SortOrder).

I pushdown seguenti sono supportati in Databricks Runtime 13.3 LTS e versioni successive e nelle risorse di calcolo di SQL Warehouse:

  • Aggregazioni
  • Operatori booleani seguenti: =, <, = <, >= , ><=>
  • Le funzioni matematiche seguenti (non supportate se ANSI è disabilitato): +, -, *, %, /
  • Operatori vari seguenti: ^, |, ~
  • Ordinamento, quando utilizzato con limitazione

Non sono supportati i seguenti pushdown:

  • Join
  • Funzioni finestra

Mapping dei tipi di dati

I tipi di dati eseguono in genere il mapping uno-a-uno quando si usa la federazione da Databricks a Databricks. Tuttavia, i tipi di dati seguenti eseguono il mapping a StringType:

Da A
ArrayType StringType
IntervalType StringType
MapType StringType
StructType StringType