Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Questo articolo illustra un approccio per continuare a usare il metastore Hive legacy per area di lavoro quando l'area di lavoro di Azure Databricks è abilitata per Unity Catalog.
Se l'area di lavoro era nel servizio prima che fosse abilitata per Unity Catalog, è probabile che abbia un metastore Hive che contiene dati che è possibile continuare a usare. Questo articolo descrive come continuare a usare le tabelle registrate in un metastore Hive.
Importante
Il metastore Hive per area di lavoro è una funzionalità legacy e le istruzioni fornite in questo articolo rappresentano flussi di lavoro legacy.
Le tabelle nel metastore Hive non traggono vantaggio dal set completo di funzionalità di sicurezza e governance fornite da Unity Catalog, come l'audit integrato, la registrazione delle origini e il controllo degli accessi. Databricks consiglia di eseguire la migrazione di tali tabelle e dei carichi di lavoro che fanno riferimento a Unity Catalog e disabilitare l'accesso diretto al metastore Hive.
Sono disponibili due percorsi di migrazione:
Aggiornare tutte le tabelle registrate nel metastore Hive a Unity Catalog.
Federate il metastore Hive a Unity Catalog tramite la federazione metastore Hive per un approccio più graduale. La federazione del metastore Hive crea un catalogo esterno in Unity Catalog che rispecchia il metastore Hive.
Vedere Aggiornare un'area di lavoro di Azure Databricks a Unity Catalog.
Eseguire una query sul metastore Hive legacy nel catalogo unity
Il metastore di Unity Catalog è di tipo additivo, il che significa che può essere utilizzato insieme al metastore Hive per area di lavoro su Azure Databricks. Il metastore Hive viene visualizzato come catalogo di primo livello denominato hive_metastore
nello spazio dei nomi a tre livelli.
Ad esempio, è possibile fare riferimento a una tabella denominata sales_raw
nello sales
schema nel metastore Hive legacy usando la notazione seguente:
SQL
SELECT * from hive_metastore.sales.sales_raw;
Pitone
display(spark.table("hive_metastore.sales.sales_raw"))
R
library(SparkR)
display(tableToDF("hive_metastore.sales.sales_raw"))
Linguaggio di programmazione Scala
display(spark.table("hive_metastore.sales.sales_raw"))
È anche possibile specificare il catalogo e lo schema con un'istruzione USE
:
SQL
USE hive_metastore.sales;
SELECT * from sales_raw;
Pitone
spark.sql("USE hive_metastore.sales")
display(spark.table("sales_raw"))
R
library(SparkR)
sql("USE hive_metastore.sales")
display(tableToDF("sales_raw"))
Linguaggio di programmazione Scala
spark.sql("USE hive_metastore.sales")
display(spark.table("sales_raw"))
Controllo di accesso nel catalogo unity rispetto al metastore Hive legacy
Se hai configurato il controllo di accesso alla tabella legacy nel metastore Hive, Databricks continua ad applicare tali controlli di accesso ai dati nel hive_metastore
catalogo per i cluster che operano in modalità di accesso standard.
Il modello di accesso al catalogo Unity differisce leggermente dai controlli di accesso legacy:
-
Metastore: Il catalogo unity è un oggetto a livello di account e il metastore Hive è un oggetto a livello di area di lavoro. Le autorizzazioni definite all'interno del
hive_metastore
catalogo fanno sempre riferimento agli utenti e ai gruppi locali nell'area di lavoro. - Gruppi di account: i criteri di controllo di accesso in Unity Catalog vengono applicati ai gruppi di account, mentre i criteri di controllo di accesso per il metastore Hive vengono applicati ai gruppi locali dell'area di lavoro. Vedi Fonti del gruppo.
-
USE CATALOG
eUSE SCHEMA
autorizzazioni sono necessarie per il catalogo e lo schema per tutte le operazioni sugli oggetti all'interno del catalogo o dello schema: Indipendentemente dai privilegi di un'entità su una tabella, l'entità deve avere i privilegiUSE CATALOG
sul catalogo padre per accedere allo schema e i privilegiUSE SCHEMA
per accedere agli oggetti nello schema. Con i controlli di accesso alle tabelle a livello di area di lavoro, d'altra parte, la concessioneUSAGE
sul catalogo principale concedeUSAGE
automaticamente su tutti i database, maUSAGE
sul catalogo principale non è necessaria. -
Visualizzazioni: nel Catalogo Unity, il proprietario di una vista non deve essere proprietario delle tabelle e delle viste a cui la vista fa riferimento. Avere il
SELECT
privilegio è sufficiente, insieme aUSE SCHEMA
sullo schema padre delle viste eUSE CATALOG
sul catalogo padre. Con i controlli di accesso alle tabelle a livello di area di lavoro, il proprietario di una vista deve essere proprietario di tutte le tabelle e le viste a cui si fa riferimento. -
Nessun supporto per
ANY FILE
oANONYMOUS FUNCTION
: in Unity Catalog non esiste alcun concetto diANY FILE
oANONYMOUS FUNCTION
che possa consentire a un utente senza privilegi di eseguire codice privilegiato. -
Nessun supporto per
DENY
: il modello dei privilegi del catalogo Unity si basa sul principio dei privilegi minimi. I privilegi non concessi vengono negati in modo implicito. -
Nessun
READ_METADATA
privilegio: Il catalogo unity gestisce l'accesso per visualizzare i metadati in modo diverso. Consulta Privilegi del catalogo Unity e oggetti securabili.
Unioni tra oggetti del Catalogo Unity e del metastore Hive
Usando la notazione dello spazio dei nomi a tre livelli, è possibile unire i dati in un metastore di Unity Catalog con i dati nel metastore Hive legacy.
Nota
Un'operazione di join con i dati nel metastore Hive legacy funzionerà solo sull'area di lavoro in cui risiedono i dati. Il tentativo di eseguire un join di questo tipo in un'altra area di lavoro genera un errore. Azure Databricks consiglia di aggiornare tabelle e viste legacy a Unity Catalog.
L'esempio seguente unisce i risultati della tabella sales_current
nel metastore Hive legacy con la tabella sales_historical
nel metastore Unity Catalog se i campi order_id
sono uguali.
SQL
SELECT * FROM hive_metastore.sales.sales_current
JOIN main.shared_sales.sales_historical
ON hive_metastore.sales.sales_current.order_id = main.shared_sales.sales_historical.order_id;
Pitone
dfCurrent = spark.table("hive_metastore.sales.sales_current")
dfHistorical = spark.table("main.shared_sales.sales_historical")
display(dfCurrent.join(
other = dfHistorical,
on = dfCurrent.order_id == dfHistorical.order_id
))
R
library(SparkR)
dfCurrent = tableToDF("hive_metastore.sales.sales_current")
dfHistorical = tableToDF("main.shared_sales.sales_historical")
display(join(
x = dfCurrent,
y = dfHistorical,
joinExpr = dfCurrent$order_id == dfHistorical$order_id))
Linguaggio di programmazione Scala
val dfCurrent = spark.table("hive_metastore.sales.sales_current")
val dfHistorical = spark.table("main.shared_sales.sales_historical")
display(dfCurrent.join(
right = dfHistorical,
joinExprs = dfCurrent("order_id") === dfHistorical("order_id")
))
Catalogo predefinito
Per ogni area di lavoro abilitata per Il catalogo Unity è configurato un catalogo predefinito.
Se si omette il nome del catalogo di primo livello quando si eseguono operazioni sui dati, viene utilizzato il catalogo predefinito.
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:
- Se l'area di lavoro è stata abilitata automaticamente per Unity Catalog, il catalogo dell'area di lavoro è stato impostato come catalogo predefinito. Vedere Abilitazione automatica del catalogo Unity.
- Se l'area di lavoro è stata abilitata manualmente per Unity Catalog, 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, è opportuno usare hive_metastore
come catalogo predefinito per evitare di influire sul codice esistente che fa riferimento al metastore Hive, a meno che non si sia completamente migrati dal metastore Hive.
Per informazioni su come ottenere e cambiare il catalogo predefinito, vedere Gestire il catalogo predefinito
Autorizzazioni di accesso ai dati con ambito cluster
Quando si usa il metastore Hive insieme a Unity Catalog, le credenziali di accesso ai dati associate al cluster vengono usate per accedere ai dati del metastore Hive, ma non ai dati registrati in Unity Catalog.
Se gli utenti accedono ai percorsi esterni a Unity Catalog ,ad esempio un percorso non registrato come tabella o posizione esterna, vengono usate le credenziali di accesso assegnate al cluster.
Consultare Connettersi ad Azure Data Lake Storage e Blob Storage.