Condividi tramite


Aggiornare un'area di lavoro di Azure Databricks a Unity Catalog

Questa pagina offre una panoramica su come aggiornare un'area di lavoro non-Unity Catalog a Unity Catalog. Fornisce inoltre istruzioni per la migrazione delle versioni legacy di Metastore Hive, DBFS e Databricks Runtime non supportate.

Panoramica dei passaggi di aggiornamento

Per eseguire l'aggiornamento a Unity Catalog, è necessario:

  1. Effettua il provisioning delle identità (utenti, gruppi e entità servizio) direttamente nell'account Azure Databricks, se non lo stai già facendo. Disattivare qualsiasi approvvigionamento delle identità a livello di area di lavoro.
  2. Converti i gruppi locali dello spazio di lavoro in gruppi a livello di account. Unity Catalog centralizza la gestione delle identità a livello di account.
  3. Collegare l'area di lavoro a un metastore di Unity Catalog. Se non esiste alcun metastore per l'area di lavoro, un amministratore dell'account deve crearne uno.
  4. Aggiornare tabelle e viste gestite nel metastore Hive a Unity Catalog.
  5. A livello di account, concedere agli utenti, ai gruppi o alle entità del servizio l'accesso alle tabelle aggiornate.
  6. Aggiornare le query e i processi per fare riferimento alle nuove tabelle di Unity Catalog anziché alle vecchie tabelle del metastore Hive.
  7. Eseguire la migrazione di file, notebook e script da DBFS.
  8. Aggiornare le risorse di calcolo attive alle versioni di Databricks Runtime supportate.
  9. Disabilitare l'accesso alle funzionalità legacy nelle aree di lavoro. Vedere Disabilitare l'accesso alle funzionalità legacy nelle aree di lavoro.

UCX, un progetto di Databricks Labs, fornisce strumenti che ti aiutano ad aggiornare il tuo spazio di lavoro non basato su Unity Catalog a Unity Catalog. UCX è una buona scelta per le migrazioni su larga scala. Vedi Utilizza le utilità UCX per aggiornare il tuo spazio di lavoro al Unity Catalog.

Prima di iniziare

Prima di iniziare, è necessario acquisire familiarità con i concetti di base del catalogo unity, inclusi i metastore e l'archiviazione gestita. Consulta Che cos'è il Catalogo Unity?.

È anche necessario verificare di possedere i seguenti requisiti:

  • Per la maggior parte dei passaggi di installazione, è necessario essere un amministratore dell'account Azure Databricks. Per qualsiasi attività che segue per cui sono presenti altri requisiti di autorizzazione, vengono elencati nella documentazione specifica dell'attività.

    Il primo amministratore dell'account Azure Databricks deve essere un amministratore globale di Microsoft Entra ID al momento dell'accesso alla console dell'account Azure Databricks. Al primo accesso, l'utente diventa un amministratore dell'account Azure Databricks e non ha più il ruolo di amministratore globale di Microsoft Entra ID per accedere all'account Azure Databricks. Il primo amministratore dell'account può assegnare gli utenti nel tenant di Microsoft Entra ID come degli amministratori di account aggiuntivi (che possono a loro volta assegnare altri amministratori di account). Gli amministratori dell'account aggiuntivi non richiedono ruoli specifici in Microsoft Entra ID.

  • Le aree di lavoro collegate al metastore devono trovarsi nel piano Azure Databricks Premium.

Eseguire l'aggiornamento alle demo di Unity Catalog

Guardare le seguenti brevi demo guidate per visualizzare le attività di aggiornamento chiave in azione. Ogni demo illustra un passaggio specifico e collegamenti alla documentazione dettagliata, se applicabile.

In alternativa, è possibile seguire la demo Usare UCX per eseguire l'aggiornamento a Unity Catalog.

Effettuare il provisioning di utenti, gruppi ed entità servizio nell'account

Unity Catalog fa riferimento alle identità a livello di account. Prima di collegare un metastore all'area di lavoro, è necessario eseguire le operazioni seguenti:

  • Se si usa SCIM per effettuare il provisioning di utenti, gruppi e entità servizio dal provider di identità all'area di lavoro, disattivarlo e configurare il provisioning nell'account Azure Databricks. Vedere Sincronizzare le identità dal provider di identità e Identità.

  • Aggiornare qualsiasi automazione configurata per gestire utenti, gruppi e entità servizio, ad esempio connettori di provisioning SCIM e automazione Terraform, in modo che facciano riferimento agli endpoint dell'account anziché agli endpoint dell'area di lavoro. Vedere il provisioning SCIM a livello di account e a livello di area di lavoro.

Convertire i gruppi locali dell'area di lavoro in gruppi a livello di account

Vedi Migrare i gruppi locali del workspace ai gruppi dell'account.

Collegare l'area di lavoro a un metastore

Se l'area di lavoro non è abilitata per Unity Catalog (collegato a un metastore), il passaggio successivo dipende dall'avere già definito un metastore di Unity Catalog per la regione dell'area di lavoro:

Aggiornare le tabelle nel metastore Hive alle tabelle del Catalogo Unity

Se l'area di lavoro era nel servizio prima che fosse abilitata per Unity Catalog, ha un metastore Hive che probabilmente contiene dati che si desidera continuare a usare. Databricks consiglia di aggiornare le tabelle gestite dal metastore Hive al metastore di Unity Catalog.

Opzione 1: Federare, quindi aggiornare le tabelle esterne

L'approccio raccomandato consiste per prima cosa nel federare il metastore Hive come catalogo esterno, per poi aggiornare in loco le tabelle esterne. Questo processo in due passaggi consente di eseguire la migrazione di tabelle senza spostamento dei dati mantenendo al tempo stesso la cronologia delle tabelle, la configurazione, le autorizzazioni e le viste.

Prima di tutto, federate il metastore Hive come catalogo esterno in Unity Catalog. In questo modo è possibile accedere alle tabelle esistenti tramite il catalogo unity e prepararle per l'aggiornamento.

Per istruzioni sulla federazione del metastore Hive, vedere Federazione del metastore Hive: abilitare il catalogo Unity per gestire le tabelle registrate in un metastore Hive.

Annotazioni

Se si sceglie di non aggiornare le tabelle e si vuole continuare a lavorare con il catalogo federato in modo permanente, è possibile farlo. Tuttavia, Databricks consiglia di completare l'aggiornamento per sfruttare al meglio le funzionalità di Unity Catalog.

Dopo aver federato il metastore Hive, è possibile aggiornare le tabelle esterne alle tabelle di Unity Catalog senza alcun spostamento dei dati. Questo flusso di lavoro aggiorna le tabelle sul posto, mantenendo la cronologia delle tabelle, la configurazione, le autorizzazioni e le viste.

Per aggiornare una tabella esterna a una tabella gestita di Unity Catalog, eseguire il comando seguente:

ALTER TABLE <foreign_catalog>.<schema>.<table_name> SET MANAGED;

Databricks consiglia l'aggiornamento a una tabella gestita per sbloccare l'ottimizzazione predittiva di Unity Catalog, che include la manutenzione automatica (compattazione, clustering, pulizia) e miglioramenti delle prestazioni. Per aggiornare invece una tabella esterna a una tabella esterna del catalogo Unity, eseguire il comando seguente:

ALTER TABLE <foreign_catalog>.<schema>.<table_name> SET EXTERNAL;

Dopo aver eseguito la migrazione delle tabelle e non ci si basa più sulla federazione nel catalogo esterno, è possibile rimuovere la connessione:

ALTER CATALOG <foreign_catalog> DROP CONNECTION;

Per altri dettagli su questo flusso di lavoro, vedere Convertire una tabella esterna in una tabella del catalogo Unity gestita.

Opzione 2: Aggiornare direttamente le tabelle

Se si sceglie di non usare il flusso di lavoro di aggiornamento basato su federazione, è possibile aggiornare le tabelle direttamente usando SYNC o CREATE TABLE AS SELECT. Vedi Aggiornamento delle tabelle e delle viste Hive al Unity Catalog.

Concedere l'accesso alle tabelle aggiornate o federate

Concedere l'accesso alle nuove tabelle agli utenti, ai gruppi o ai principali del servizio a livello di account. Consulta Gestione dei privilegi in Unity Catalog.

Aggiornare le query e i processi per funzionare con le vostre tabelle potenziate e i percorsi ai dati aggiornati

Durante la transizione dal metastore Hive locale dell'area di lavoro al catalogo Unity, è possibile continuare a usare query e processi che fanno riferimento ai dati registrati nel metastore Hive, usando la federazione del metastore Hive (scelta consigliata) o la sintassi descritta in Usare il metastore Hive legacy insieme a Unity Catalog. Tuttavia, alla fine è necessario aggiornare tutte le query e i processi per usare tabelle e sintassi del catalogo Unity.

Analogamente, aggiornare query e attività che utilizzano l'accesso ai file basato su percorso per usare invece i volumi di Unity Catalog.

Per ulteriori consigli dettagliati, vedere Aggiornare i processi quando si aggiornano le aree di lavoro legacy a Unity Catalog.

Disabilitare l'accesso a DBFS

Come parte della migrazione di Unity Catalog, Databricks consiglia di disabilitare l'accesso a DBFS nelle aree di lavoro. In questo modo si garantisce che tutti i dati e i flussi di lavoro siano regolati da Unity Catalog e che si sfruttano appieno le funzionalità di Unity Catalog.

È possibile usare gli script dello scanner DBFS di Databricks Labs per analizzare l'utilizzo corrente di DBFS e decidere se registrare l'asset sul posto (usando una posizione esterna), eseguire la migrazione a Unity Catalog o archiviarlo se non è più necessario. Databricks Labs è un repository GitHub pubblico che non è supportato direttamente da Databricks.

Le sezioni seguenti descrivono come eseguire la migrazione di asset diversi da DBFS a Unity Catalog.

Eseguire la migrazione dei file archiviati in DBFS

Se hai file non elaborati, come Parquet, CSV, JSON o immagini, archiviati nella radice DBFS (ad esempio, in /FileStore o in altre directory radice DBFS) o nell'archiviazione cloud montata su DBFS (in /mnt/...), migrarli utilizzando i volumi del catalogo Unity e accedervi usando i percorsi esterni.

I passaggi seguenti descrivono come eseguire la migrazione di file da DBFS a volumi del catalogo Unity. Per altre informazioni su quando usare volumi e file dell'area di lavoro, vedere Raccomandazioni per i file nei volumi e nei file dell'area di lavoro.

Passaggio 1: Configurare una posizione esterna

Per registrare gli asset in Unity Catalog, configurare un percorso esterno per Unity Catalog per il contenitore di archiviazione cloud o il percorso in cui i file risiedono attualmente. A tale scopo, è possibile usare Esplora cataloghi, comandi SQL, Terraform o l'interfaccia della riga di comando di Azure Databricks.

Per istruzioni dettagliate, vedere Connettersi all'archiviazione di oggetti cloud usando il catalogo unity.

Passaggio 2: Creare un volume

I volumi del catalogo Unity offrono un modo regolamentato per organizzare i file. Databricks consiglia di usare volumi per gestire tutti i dati non tabulari. È possibile creare un volume esterno in uno schema che fa riferimento a un sottopercorso della posizione esterna. Per esempio:

USE CATALOG main;
USE SCHEMA data;
CREATE VOLUME IF NOT EXISTS raw_files
LOCATION 'my_data_loc/csv-files/';

Tutti i file in tale percorso sono ora accessibili tramite il percorso esterno e regolati dalle autorizzazioni del catalogo Unity.

Per altre informazioni, vedere Che cosa sono i volumi del catalogo Unity?.

Passaggio 3: Copiare file dalla radice DBFS

Se i file sono stati archiviati in precedenza nella radice DBFS, copiarli nel percorso di archiviazione cloud. Ad esempio, in un notebook:

dbutils.fs.cp(
  "dbfs:/FileStore/tables/data.csv",
  "/Volumes/main/data/raw_files/data.csv"
)

Suggerimento

Se si dispone di un numero elevato di file o file di dimensioni superiori a pochi GB, è consigliabile usare l'interfaccia della riga di comando di Azure Databricks o una copia distribuita usando Apache Spark per parallelizzare lo spostamento. Il comando CLI di Azure Databricks fs cp può copiare in modo ricorsivo le directory.

Passaggio 4: Verificare i file migrati

Dopo la migrazione, elencare e leggere i file dai volumi usando i comandi standard:

# List files in the volume
dbutils.fs.ls("/Volumes/main/data/raw_files/")

# Read a CSV file into a DataFrame
df = spark.read.option("header", True).csv(
  "/Volumes/main/data/raw_files/2024-01-01-data.csv"
)

Questo codice richiede autorizzazioni appropriate per il catalogo Unity per il volume o la posizione esterna e una risorsa di calcolo che supporta il catalogo Unity. Il Catalogo Unity impone che l'entità principale che legge il file disponga del permesso READ per il volume o il percorso esterno.

Passaggio 5: Pulire i montaggi DBFS

Dopo aver verificato che i file nel nuovo percorso siano accessibili, smontare i punti di montaggio DBFS precedenti per evitare confusione o uso accidentale:

dbutils.fs.unmount("/mnt/oldpath")

Valutare la possibilità di bloccare o eliminare i dati nella radice di DBFS se sono stati spostati, perché lasciare copie può causare aggiornamenti incoerenti o rischi per la sicurezza.

Eseguire la migrazione degli asset dell'area di lavoro da DBFS

Alcune aree di lavoro includono notebook, file di codice o script di riferimento archiviati in DBFS. Questi potrebbero includere:

  • Notebook salvati come file HTML o DBC in /FileStore per la condivisione
  • Script Python o file JAR usati nei processi di Azure Databricks
  • Script init con ambito di calcolo (ad esempio, dbfs:/databricks/init/...)

I notebook e il codice devono essere archiviati come file dell'area di lavoro o in cartelle Git, non in DBFS. DBFS non fornisce il controllo di accesso per ogni file e non deve essere usato per il codice sorgente o i notebook.

  • Notebook: Se hai notebook come file in DBFS, importali nell'area di lavoro di Azure Databricks. Puoi eseguire questa operazione manualmente usando la funzione di importazione dell'interfaccia utente o la CLI. Assicurarsi che le autorizzazioni del notebook nell'area di lavoro siano impostate in modo appropriato per l'accesso al team. In futuro, archiviare i notebook come oggetti dell'area di lavoro o in cartelle Git e usare Git per il controllo della versione.
  • Script di job: se i job sono configurati per eseguire uno script Python da DBFS (ad esempio, un job con un tipo di attività "script Python" che fa riferimento a dbfs:/mnt/scripts/my_etl.py), sposta tali script nei file dell'area di lavoro. Gestirli in una cartella Git per il controllo della versione e il rilevamento delle modifiche.
  • Creare artefatti e librerie: gli asset come file JAR e le ruote Python devono essere archiviati nei volumi del catalogo Unity.
  • Script di inizializzazione con ambito calcolo: gli script di inizializzazione con ambito calcolo devono essere memorizzati nei volumi del "Catalogo Unity". Consulta Che cosa sono gli script init?.

Individuare ed eseguire la migrazione del calcolo alle versioni e alle modalità di accesso supportate di Databricks Runtime

Annotazioni

Questa sezione include le query che accedono alla tabella system.compute.clusters. Per accedere a questa tabella di sistema, è necessario essere un amministratore dell'account Azure Databricks o avere ottenuto USE e SELECT autorizzazioni per lo schema di compute sistema. Vedere Concedere l'accesso alle tabelle di sistema.

Nell'ambito della migrazione di Unity Catalog, Databricks consiglia di aggiornare tutti i processi e di calcolo a Databricks Runtime 13.3 LTS o versione successiva e di usare le modalità di accesso al catalogo Unity.

Per esaminare manualmente le risorse di calcolo nell'area di lavoro, passare alla pagina Calcolo dell'area di lavoro. Nella sezione Calcolo all-purpose esaminare la versione di Databricks Runtime di ogni calcolo. Ordinare o filtrare in base alla versione per identificare i cluster che eseguono versioni inferiori alla 13.3 LTS. Ripetere la sezione Job compute, perché i job possono anche essere configurati per utilizzare una particolare versione del Databricks Runtime.

Per trovare in modo programmatico le versioni di calcolo precedenti alla versione 13.3 LTS, eseguire una query sulla tabella system.compute.clusters. Per esempio:

SELECT
  workspace_id,
  cluster_id,
  dbr_version
FROM system.compute.clusters
WHERE
  TRY_CAST(SPLIT(dbr_version, '\\.')[0] AS INT) < 13
  OR (
    TRY_CAST(SPLIT(dbr_version, '\\.')[0] AS INT) = 13
    AND TRY_CAST(SPLIT(dbr_version, '\\.')[1] AS INT) < 3
  );

Verrà restituito un elenco di risorse di calcolo generali e di risorse di calcolo per processi che eseguono versioni inferiori alla 13.3 LTS.

Aggiornare il calcolo alle modalità di accesso supportate

Se il calcolo è ancora in esecuzione in modalità di accesso condiviso senza isolamento, è possibile aggiornarlo alle modalità di accesso supportate. Vedere Modalità di accesso. Per effettuare una query sul calcolo in esecuzione in modalità di accesso condiviso senza isolamento, interrogare la tabella system.compute.clusters. Per esempio:

SELECT
  workspace_id,
  cluster_id,
  dbr_version,
  data_security_mode
FROM system.compute.clusters
WHERE data_security_mode IN ('NONE','NO_ISOLATION')
LIMIT 100;

Disabilitare l'accesso alle funzionalità legacy nelle aree di lavoro

Dopo aver completato i passaggi di migrazione precedenti, è possibile disabilitare l'accesso alle funzionalità legacy nelle aree di lavoro.