Creazione e gestione dei cataloghi

Questo articolo illustra come creare e gestire cataloghi in Unity Catalog. Un catalogo contiene schemi (database) e uno schema contiene tabelle, viste, volumi, modelli e funzioni.

Nota

Nelle aree di lavoro abilitate automaticamente per Unity Catalog è stato creato automaticamente un catalogo di aree di lavoro per impostazione predefinita. Per impostazione predefinita, tutti gli utenti dell'area di lavoro (e solo l'area di lavoro) possono accedervi. Vedere Passaggio 1: Verificare che l'area di lavoro sia abilitata per il catalogo unity.

Nota

Per informazioni su come creare un catalogo esterno, un oggetto Catalogo Unity che esegue il mirroring di un database in un sistema dati esterno, vedere Creare un catalogo esterno. Vedere anche Gestire e usare cataloghi stranieri.

Requisiti

Per creare un catalogo:

  • È necessario essere un amministratore del metastore di Azure Databricks o avere il privilegio per CREATE CATALOG il metastore.

  • È necessario disporre di un metastore del catalogo Unity collegato all'area di lavoro in cui si esegue la creazione del catalogo.

  • Il cluster usato per eseguire un notebook per creare un catalogo deve usare una modalità di accesso conforme a Unity Catalog. Vedere Modalità di accesso.

    I warehouse SQL supportano sempre il catalogo Unity.

Creare un catalogo

Per creare un catalogo, è possibile usare Esplora cataloghi o un comando SQL.

Esplora cataloghi

  1. Accedere a un'area di lavoro collegata al metastore.

  2. Fare clic su Icona catalogoCatalogo.

  3. Fare clic sul pulsante Crea catalogo .

  4. Selezionare il tipo di catalogo da creare:

    • Catalogo standard : un oggetto a protezione diretta che organizza gli asset di dati gestiti da Unity Catalog. Per tutti i casi d'uso ad eccezione della federazione lakehouse.
    • Catalogo esterno : un oggetto a protezione diretta in Unity Catalog che esegue il mirroring di un database in un sistema di dati esterno tramite Lakehouse Federation. Vedere Panoramica della configurazione di Lakehouse Federation.
  5. (Facoltativo ma fortemente consigliato) Specificare un percorso di archiviazione gestito. Richiede il CREATE MANAGED STORAGE privilegio per la posizione esterna di destinazione. Vedere Specificare un percorso di archiviazione gestito nel catalogo unity.

    Importante

    Se l'area di lavoro non dispone di una posizione di archiviazione a livello di metastore, è necessario specificare un percorso di archiviazione gestito quando si crea un catalogo.

  6. Fai clic su Crea.

  7. (Facoltativo) Specificare l'area di lavoro a cui è associato il catalogo.

    Per impostazione predefinita, il catalogo viene condiviso con tutte le aree di lavoro collegate al metastore corrente. Se il catalogo conterrà dati che devono essere limitati a aree di lavoro specifiche, passare alla scheda Aree di lavoro e aggiungere tali aree di lavoro.

    Per altre informazioni, vedere (Facoltativo) Assegnare un catalogo a aree di lavoro specifiche.

  8. Assegnare le autorizzazioni per il catalogo. Vedere Privilegi del catalogo Unity e oggetti a protezione diretta.

Sql

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

    • <catalog-name>: nome del catalogo.

    • <location-path>: facoltativo ma fortemente consigliato. Specificare un percorso di archiviazione se si desidera che le tabelle gestite in questo catalogo vengano archiviate in un percorso diverso rispetto all'archiviazione radice predefinita configurata per il metastore.

      Importante

      Se l'area di lavoro non dispone di una posizione di archiviazione a livello di metastore, è necessario specificare un percorso di archiviazione gestito quando si crea un catalogo.

      Questo percorso deve essere definito in una configurazione del percorso esterno ed è necessario avere il CREATE MANAGED STORAGE privilegio per la configurazione della posizione esterna. È possibile usare il percorso definito nella configurazione del percorso esterno o un sottopercorso (in altre parole, 'abfss://my-container-name@storage-account-name.dfs.core.windows.net/finance' o 'abfss://my-container-name@storage-account-name.dfs.core.windows.net/finance/product'). Richiede Databricks Runtime 11.3 e versioni successive.

    • <comment>: Descrizione facoltativa o altro commento.

    Nota

    Se si sta creando un catalogo esterno (un oggetto a protezione diretta in Unity Catalog che esegue il mirroring di un database in un sistema dati esterno, usato per la federazione lakehouse), il comando SQL è CREATE FOREIGN CATALOG e le opzioni sono diverse. Vedere Creare un catalogo esterno.

    CREATE CATALOG [ IF NOT EXISTS ] <catalog-name>
       [ MANAGED LOCATION '<location-path>' ]
       [ COMMENT <comment> ];
    

    Ad esempio, per creare un catalogo denominato example:

    CREATE CATALOG IF NOT EXISTS example;
    

    Per limitare l'accesso al catalogo a aree di lavoro specifiche nell'account, noto anche come associazione del catalogo dell'area di lavoro, vedere Associare un catalogo a una o più aree di lavoro.

    Per le descrizioni dei parametri, vedere CREATE CATALOG.

  2. Assegnare privilegi al catalogo. Vedere Privilegi del catalogo Unity e oggetti a protezione diretta.

Quando si crea un catalogo, vengono creati default automaticamente due schemi (database): e information_schema.

È anche possibile creare un catalogo usando il provider Databricks Terraform e databricks_catalog. È possibile recuperare informazioni sui cataloghi usando databricks_catalogs.

(Facoltativo) Assegnare un catalogo a aree di lavoro specifiche

Se si usano aree di lavoro per isolare l'accesso ai dati utente, è possibile limitare l'accesso al catalogo a aree di lavoro specifiche nell'account, noto anche come associazione del catalogo dell'area di lavoro. L'impostazione predefinita consiste nel condividere il catalogo con tutte le aree di lavoro collegate al metastore corrente.

È possibile consentire l'accesso in lettura e scrittura al catalogo da un'area di lavoro (impostazione predefinita) oppure è possibile specificare l'accesso in sola lettura. Se si specifica di sola lettura, tutte le operazioni di scrittura vengono bloccate da tale area di lavoro a tale catalogo.

I casi d'uso tipici per l'associazione di un catalogo a aree di lavoro specifiche includono:

  • Garantire che gli utenti possano accedere solo ai dati di produzione da un ambiente dell'area di lavoro di produzione.
  • Garantire che gli utenti possano elaborare solo i dati sensibili da un'area di lavoro dedicata.
  • Concedere agli utenti l'accesso in sola lettura ai dati di produzione da un'area di lavoro per sviluppatori per abilitare lo sviluppo e il test.

Esempio di associazione del catalogo dell'area di lavoro

Si prenda l'esempio di isolamento di produzione e sviluppo. Se si specifica che i cataloghi dati di produzione possono essere accessibili solo dalle aree di lavoro di produzione, vengono sostituite tutte le singole concessioni rilasciate agli utenti.

Diagramma di associazione dell'area di lavoro del catalogo

In questo diagramma è prod_catalog associato a due aree di lavoro di produzione. Si supponga che a un utente sia stato concesso l'accesso a una tabella in prod_catalog chiamata my_table (usando GRANT SELECT ON my_table TO <user>). Se l'utente tenta di accedere my_table all'area di lavoro Sviluppo, viene visualizzato un messaggio di errore. L'utente può accedere my_table solo dalle aree di lavoro Prod ETL e Prod Analytics.

Le associazioni del catalogo dell'area di lavoro vengono rispettate in tutte le aree della piattaforma. Ad esempio, se si esegue una query sullo schema delle informazioni, vengono visualizzati solo i cataloghi accessibili nell'area di lavoro in cui si esegue la query. La derivazione dei dati e le interfacce utente di ricerca mostrano in modo analogo solo i cataloghi assegnati all'area di lavoro (se si usano associazioni o per impostazione predefinita).

Associare un catalogo a una o più aree di lavoro

Per assegnare un catalogo a aree di lavoro specifiche, è possibile usare Esplora cataloghi o l'API REST del catalogo Unity.

Autorizzazioni necessarie: amministratore metastore o proprietario del catalogo.

Nota

Gli amministratori metastore possono visualizzare tutti i cataloghi in un metastore usando Esplora cataloghi e i proprietari del catalogo possono visualizzare tutti i cataloghi di cui sono proprietari in un metastore, indipendentemente dal fatto che il catalogo sia assegnato all'area di lavoro corrente. I cataloghi non assegnati all'area di lavoro vengono visualizzati in grigio e nessun oggetto figlio è visibile o su cui è possibile eseguire query.

Esplora cataloghi

  1. Accedere a un'area di lavoro collegata al metastore.

  2. Fare clic su Icona catalogoCatalogo.

  3. Nel riquadro Catalogo, a sinistra, fare clic sul nome del catalogo.

    Per impostazione predefinita, il riquadro principale esplora cataloghi è l'elenco Cataloghi . È anche possibile selezionare il catalogo.

  4. Nella scheda Aree di lavoro deselezionare la casella di controllo Tutte le aree di lavoro hanno accesso.

    Se il catalogo è già associato a una o più aree di lavoro, questa casella di controllo è già deselezionata.

  5. Fare clic su Assegna alle aree di lavoro e immettere o trovare le aree di lavoro da assegnare.

  6. (Facoltativo) Limitare l'accesso all'area di lavoro in sola lettura.

    Nel menu Gestisci livello di accesso selezionare Modifica accesso in sola lettura.

    È possibile invertire questa selezione in qualsiasi momento modificando il catalogo e selezionando Modifica l'accesso alla lettura e scrittura.

Per revocare l'accesso, passare alla scheda Aree di lavoro , selezionare l'area di lavoro e fare clic su Revoca.

Api

Esistono due API e due passaggi necessari per assegnare un catalogo a un'area di lavoro. Negli esempi seguenti sostituire <workspace-url> con il nome dell'istanza dell'area di lavoro. Per informazioni su come ottenere il nome dell'istanza dell'area di lavoro e l'ID dell'area di lavoro, vedere Ottenere gli identificatori per gli oggetti dell'area di lavoro. Per informazioni su come ottenere i token di accesso, vedere Autenticazione per l'automazione di Azure Databricks - Panoramica.

  1. Usare l'API catalogs per impostare il catalogo isolation mode su ISOLATED:

    curl -L -X PATCH 'https://<workspace-url>/api/2.1/unity-catalog/catalogs/<my-catalog> \
    -H 'Authorization: Bearer <my-token> \
    -H 'Content-Type: application/json' \
    --data-raw '{
     "isolation_mode": "ISOLATED"
     }'
    

    L'impostazione predefinita isolation mode è OPEN tutte le aree di lavoro collegate al metastore.

  2. Usare l'API di aggiornamento bindings per assegnare le aree di lavoro al catalogo:

    curl -L -X PATCH 'https://<workspace-url>/api/2.1/unity-catalog/bindings/catalog/<my-catalog> \
    -H 'Authorization: Bearer <my-token> \
    -H 'Content-Type: application/json' \
    --data-raw '{
      "add": [{"workspace_id": <workspace-id>, "binding_type": <binding-type>}...],
      "remove": [{"workspace_id": <workspace-id>, "binding_type": "<binding-type>}...]
    }'
    

    Usare le "add" proprietà e "remove" per aggiungere o rimuovere associazioni dell'area di lavoro. <binding-type> può essere “BINDING_TYPE_READ_WRITE” (impostazione predefinita) o “BINDING_TYPE_READ_ONLY”.

Per elencare tutte le assegnazioni dell'area di lavoro per un catalogo, usare l'API elenco bindings :

   curl -L -X GET 'https://<workspace-url>/api/2.1/unity-catalog/bindings/catalog/<my-catalog> \
   -H 'Authorization: Bearer <my-token> \

Annullare l'associazione di un catalogo da un'area di lavoro

Le istruzioni per revocare l'accesso all'area di lavoro a un catalogo tramite Esplora cataloghi o l'API bindings sono incluse in Associare un catalogo a una o più aree di lavoro.

Importante

Se l'area di lavoro è stata abilitata automaticamente per Unity Catalog e si dispone di un catalogo dell'area di lavoro, gli amministratori dell'area di lavoro possiedono tale catalogo e dispongono di tutte le autorizzazioni per tale catalogo solo nell'area di lavoro. Se il catalogo viene scollegato o associato ad altri cataloghi, è necessario concedere manualmente le autorizzazioni necessarie ai membri del gruppo di amministratori dell'area di lavoro come singoli utenti o usando gruppi a livello di account, perché il gruppo di amministratori dell'area di lavoro è un gruppo locale dell'area di lavoro. Per altre informazioni sui gruppi di account e sui gruppi locali dell'area di lavoro, vedere Differenza tra gruppi di account e gruppi locali dell'area di lavoro.

Aggiungere schemi al catalogo

Per informazioni su come aggiungere schemi (database) al catalogo. vedere Creare e gestire schemi (database).

Visualizzare i dettagli del catalogo

Per visualizzare informazioni su un catalogo, è possibile usare Esplora cataloghi o un comando SQL.

Esplora cataloghi

  1. Accedere a un'area di lavoro collegata al metastore.

  2. Fare clic su Icona catalogoCatalogo.

  3. Nel riquadro Catalogo trovare il catalogo e fare clic sul relativo nome.

    Alcuni dettagli sono elencati nella parte superiore della pagina. Altri utenti possono essere visualizzati nelle schede Schemi, Dettagli, Autorizzazioni e Aree di lavoro .

Sql

Eseguire il comando SQL seguente in un notebook o in un editor SQL di Databricks. Gli elementi tra parentesi quadre sono facoltativi. Sostituire il segnaposto <catalog-name>.

Per informazioni dettagliate, vedere DESCRIBE CATALOG.

DESCRIBE CATALOG <catalog-name>;

Usare CATALOG EXTENDED per ottenere i dettagli completi.

Eliminare un catalogo

Per eliminare o eliminare un catalogo, è possibile usare Esplora cataloghi o un comando SQL. Per eliminare un catalogo, è necessario essere il proprietario.

Esplora cataloghi

È necessario eliminare tutti gli schemi nel catalogo tranne information_schema prima di poter eliminare un catalogo. Questo include lo schema creato automaticamente default .

  1. Accedere a un'area di lavoro collegata al metastore.
  2. Fare clic su Icona catalogoCatalogo.
  3. Nel riquadro Catalogo, a sinistra, fare clic sul catalogo da eliminare.
  4. Nel riquadro dei dettagli fare clic sul menu a tre punti a sinistra del pulsante Crea database e selezionare Elimina.
  5. Nella finestra di dialogo Elimina catalogo fare clic su Elimina.

Sql

Eseguire il comando SQL seguente in un notebook o in un editor SQL di Databricks. Gli elementi tra parentesi quadre sono facoltativi. Sostituire il segnaposto <catalog-name>.

Per le descrizioni dei parametri, vedere DROP CATALOG.

Se si usa DROP CATALOG senza l'opzione CASCADE , è necessario eliminare tutti gli schemi nel catalogo tranne information_schema prima di poter eliminare il catalogo. Questo include lo schema creato automaticamente default .

DROP CATALOG [ IF EXISTS ] <catalog-name> [ RESTRICT | CASCADE ]

Ad esempio, per eliminare un catalogo denominato vaccine e i relativi schemi:

DROP CATALOG vaccine CASCADE

Gestire il catalogo predefinito

Per ogni area di lavoro abilitata per Il catalogo Unity è configurato un catalogo predefinito. Il catalogo predefinito consente di eseguire operazioni sui dati senza specificare un catalogo. Se si omette il nome del catalogo di primo livello quando si eseguono operazioni sui dati, viene utilizzato il catalogo predefinito.

Un amministratore dell'area di lavoro può visualizzare o cambiare il catalogo predefinito usando l'interfaccia utente Amministrazione Impostazioni. È anche possibile impostare il catalogo predefinito per un cluster usando una configurazione spark.

I comandi che non specificano il catalogo (ad esempio GRANT CREATE TABLE ON SCHEMA myschema TO mygroup) vengono valutati per il catalogo nell'ordine seguente:

  1. Il catalogo è impostato per la sessione usando un'istruzione USE CATALOG o un'impostazione JDBC?
  2. La configurazione spark.databricks.sql.initial.catalog.namespace di Spark è impostata nel cluster?
  3. Esiste un catalogo predefinito dell'area di lavoro per il cluster?

Configurazione del catalogo predefinita quando Il catalogo unity è abilitato

Il catalogo predefinito configurato inizialmente per l'area di lavoro dipende dal modo in cui l'area di lavoro è stata abilitata per il catalogo Unity:

  • Per alcune aree di lavoro abilitate automaticamente per Unity Catalog, il catalogo dell'area di lavoro è stato impostato come catalogo predefinito. Vedere Abilitazione automatica del catalogo Unity.
  • Per tutte le altre aree di lavoro, il hive_metastore catalogo è stato impostato come catalogo predefinito.

Se si esegue la transizione dal metastore Hive al catalogo Unity all'interno di un'area di lavoro esistente, in genere è opportuno usare hive_metastore come catalogo predefinito per evitare di influire sul codice esistente che fa riferimento al metastore hive.

Modificare il catalogo predefinito

Un amministratore dell'area di lavoro può modificare il catalogo predefinito per l'area di lavoro. Chiunque disponga dell'autorizzazione per creare o modificare un cluster può impostare un catalogo predefinito diverso per il cluster.

Avviso

La modifica del catalogo predefinito può interrompere le operazioni sui dati esistenti che dipendono da essa.

Per configurare un catalogo predefinito diverso per un'area di lavoro:

  1. Accedere all'area di lavoro come amministratore dell'area di lavoro.
  2. Fare clic sul nome utente nella barra superiore dell'area di lavoro e selezionare Impostazioni dall'elenco a discesa.
  3. Fare clic sulla scheda Avanzate.
  4. Nella riga Catalogo predefinito per l'area di lavoro immettere il nome del catalogo e fare clic su Salva.

Riavviare sql warehouse e cluster per rendere effettiva la modifica. Tutti i nuovi e riavviati sql warehouse e cluster useranno questo catalogo come impostazione predefinita dell'area di lavoro.

È anche possibile eseguire l'override del catalogo predefinito per un cluster specifico impostando la configurazione spark seguente nel cluster. Questo approccio non è disponibile per i warehouse SQL:

spark.databricks.sql.initial.catalog.name

Per istruzioni, vedere Configurazione di Spark.

Visualizzare il catalogo predefinito corrente

Per ottenere il catalogo predefinito corrente per l'area di lavoro, è possibile usare un'istruzione SQL in un notebook o in una query dell'editor SQL. Un amministratore dell'area di lavoro può ottenere il catalogo predefinito usando l'interfaccia utente di Amministrazione Impostazioni.

Impostazioni dell'amministratore

  1. Accedere all'area di lavoro come amministratore dell'area di lavoro.
  2. Fare clic sul nome utente nella barra superiore dell'area di lavoro e selezionare Impostazioni dall'elenco a discesa.
  3. Fare clic sulla scheda Avanzate.
  4. Nel catalogo predefinito per la riga dell'area di lavoro visualizzare il nome del catalogo.

Sql

Eseguire il comando seguente in un notebook o in una query dell'editor SQL in esecuzione in un cluster conforme al catalogo di SQL Warehouse o Unity. Il catalogo predefinito dell'area di lavoro viene restituito finché non è stata impostata alcuna USE CATALOG istruzione o impostazione JDBC nella sessione e, purché non sia impostata alcuna spark.databricks.sql.initial.catalog.namespace configurazione per il cluster.

SELECT current_catalog();