Aggiornare tabelle e viste al catalogo Unity

Questo articolo descrive come aggiornare tabelle e viste registrate nel metastore Hive esistente in Unity Catalog.

Importante

In alternativa alle procedure manuali descritte in questo articolo, Databricks Labs fornisce anche il progetto UCX, un set di flussi di lavoro e utilità che è possibile usare per pianificare ed eseguire l'aggiornamento delle tabelle in un metastore Hive alle tabelle nel metastore del catalogo Unity. UCX consente anche di aggiornare i gruppi di aree di lavoro ai gruppi a livello di account e di eseguire la migrazione delle credenziali per l'accesso ai percorsi di archiviazione. Per altre informazioni, vedere Usare le utilità UCX per aggiornare l'area di lavoro a Unity Catalog.

Per determinare se una tabella è attualmente registrata in Unity Catalog, controllare il nome del catalogo. Le tabelle nel catalogo hive_metastore vengono registrate nel metastore Hive. Tutti gli altri cataloghi elencati sono regolati da Unity Catalog.

Nota

Unity Catalog gestisce le partizioni in modo diverso rispetto a Hive. I comandi Hive che modificano direttamente le partizioni non sono supportati nelle tabelle gestite dal catalogo Unity.

Aggiornare uno schema o più tabelle a Unity Catalog

È possibile copiare schemi completi (database) e più tabelle esterne dal metastore Hive predefinito al metastore del catalogo Unity usando l'aggiornamento guidato di Esplora cataloghi .

Requisiti

Prima di iniziare, è necessario disporre di:

  • Credenziali di archiviazione che contengono le informazioni su un'entità servizio autorizzata ad accedere al percorso della tabella.
  • Posizione esterna che fa riferimento alle credenziali di archiviazione appena create e al percorso dei dati nel tenant cloud.
  • CREATE EXTERNAL TABLE autorizzazione nella posizione esterna delle tabelle da aggiornare.

Processo di aggiornamento

  1. Fare clic su Icona catalogoCatalogo nella barra laterale per aprire Esplora cataloghi.

  2. Selezionare hive_metastore come catalogo e selezionare lo schema (database) da aggiornare.

    Seleziona database

  3. Fare clic su Aggiorna in alto a destra nella visualizzazione dettagli dello schema.

  4. Selezionare tutte le tabelle da aggiornare e fare clic su Avanti.

    È possibile aggiornare solo le tabelle esterne in formati supportati da Unity Catalog tramite la procedura guidata di aggiornamento.

  5. Impostare il catalogo di destinazione, lo schema (database) e il proprietario per ogni tabella.

    Gli utenti potranno accedere alla tabella appena creata nel contesto dei relativi privilegi nel catalogo e nello schema.

    I proprietari di tabelle dispongono di tutti i privilegi per la tabella, inclusi SELECT e MODIFY. Se non si seleziona un proprietario, le tabelle gestite vengono create con l'utente come proprietario. Databricks consiglia in genere di concedere la proprietà della tabella ai gruppi. Per altre informazioni sulla proprietà degli oggetti in Unity Catalog, vedere Gestire la proprietà degli oggetti del catalogo Unity.

    Per assegnare lo stesso catalogo e lo stesso schema a più tabelle, selezionare le tabelle e fare clic sul pulsante Imposta destinazione .

    Per assegnare lo stesso proprietario a più tabelle, selezionare le tabelle e fare clic sul pulsante Imposta proprietario .

  6. Esaminare le configurazioni della tabella. Per modificarle, fare clic sul pulsante Indietro .

  7. Fare clic su Crea query per l'aggiornamento.

    Viene visualizzato un editor di query con istruzioni SQL generate.

  8. Esegui la query.

    Al termine della query, i metadati di ogni tabella sono stati copiati dal metastore Hive in Unity Catalog. Queste tabelle sono contrassegnate come aggiornate nella procedura guidata di aggiornamento.

  9. Definire il controllo di accesso con granularità fine usando la scheda Autorizzazioni di ogni nuova tabella.

  10. Modificare i carichi di lavoro per usare la nuova tabella.

Aggiornare una singola tabella esterna a Unity Catalog

È possibile copiare una tabella esterna dal metastore Hive predefinito nel metastore del catalogo Unity usando Esplora cataloghi.

Requisiti

Prima di iniziare, è necessario disporre di:

  • Credenziali di archiviazione che contengono le informazioni su un'entità servizio o un'identità gestita autorizzata ad accedere al percorso della tabella.
  • Posizione esterna che fa riferimento alle credenziali di archiviazione appena create e al percorso dei dati nel tenant cloud.
  • CREATE EXTERNAL TABLE autorizzazione per il percorso esterno della tabella da aggiornare.

Processo di aggiornamento

Per aggiornare una tabella esterna:

  1. Fare clic su Icona catalogoCatalogo nella barra laterale per aprire Esplora cataloghi.

  2. Selezionare il database, quindi la tabella da aggiornare.

  3. Fare clic su Aggiorna azione nell'angolo superiore destro della visualizzazione dettagli tabella.

  4. Selezionare il catalogo di destinazione, lo schema (database) e il proprietario.

    Gli utenti potranno accedere alla tabella appena creata nel contesto dei relativi privilegi nel catalogo e nello schema.

    I proprietari di tabelle dispongono di tutti i privilegi per la tabella, inclusi SELECT e MODIFY. Se non si seleziona un proprietario, la tabella gestita viene creata con l'utente come proprietario. Databricks consiglia in genere di concedere la proprietà della tabella ai gruppi. Per altre informazioni sulla proprietà degli oggetti in Unity Catalog, vedere Gestire la proprietà degli oggetti del catalogo Unity.

  5. Fare clic su Aggiorna.

    I metadati della tabella vengono ora copiati in Unity Catalog ed è stata creata una nuova tabella. È ora possibile usare la scheda Autorizzazioni per definire il controllo di accesso con granularità fine.

  6. Modificare i carichi di lavoro esistenti per usare la nuova tabella.

    Nota

    Se la tabella precedente non è più necessaria, è possibile eliminarla dal Metastore Hive. L'eliminazione di una tabella esterna non modifica i file di dati nel tenant cloud.

Aggiornare una visualizzazione a Unity Catalog

Dopo aver aggiornato tutte le tabelle a cui si fa riferimento a una vista allo stesso metastore del catalogo Unity, è possibile creare una nuova vista che fa riferimento alle nuove tabelle.

Aggiornare una tabella a una tabella gestita del catalogo Unity

Per aggiornare una tabella a Unity Catalog come tabella gestita:

  1. Creare una nuova tabella del catalogo Unity eseguendo una query sulla tabella esistente. Sostituire i valori segnaposto:

    • <catalog>: catalogo di Unity Catalog per la nuova tabella.
    • <new-schema>: schema del catalogo Unity per la nuova tabella.
    • <new-table>: nome per la tabella del catalogo Unity.
    • <old-schema>: schema per la tabella precedente, ad esempio default.
    • <old-table>: nome della tabella precedente.

    SQL

    CREATE TABLE <catalog>.<new-schema>.<new-table>
    AS SELECT * FROM hive_metastore.<old-schema>.<old-table>;
    

    Python

    df = spark.table("hive_metastore.<old-schema>.<old-table>")
    
    df.write.saveAsTable(
      name = "<catalog>.<new-schema>.<new-table>"
    )
    

    R

    %r
    library(SparkR)
    
    df = tableToDF("hive_metastore.<old-schema>.<old-table>")
    
    saveAsTable(
      df = df,
      tableName = "<catalog>.<new-schema>.<new-table>"
    )
    

    Scala

    val df = spark.table("hive_metastore.<old-schema>.<old-table>")
    
    df.write.saveAsTable(
      tableName = "<catalog>.<new-schema>.<new-table>"
    )
    

    Se si desidera eseguire la migrazione solo di alcune colonne o righe, modificare l'istruzione SELECT .

    Nota

    Questo comando crea una tabella gestita in cui i dati vengono copiati nel percorso di archiviazione nominato al momento della configurazione del metastore. Per creare una tabella esterna, in cui una tabella viene registrata in Unity Catalog senza spostare i dati nell'archiviazione cloud, vedere Aggiornare una singola tabella esterna a Unity Catalog.

  2. Concedere agli utenti o ai gruppi a livello di account l'accesso alla nuova tabella. Vedere Gestire i privilegi nel catalogo unity.

  3. Dopo la migrazione della tabella, gli utenti devono aggiornare le query e i carichi di lavoro esistenti per usare la nuova tabella.

  4. Prima di eliminare la tabella precedente, testare le dipendenze revocando l'accesso e rieseguando query e carichi di lavoro correlati.