Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
In diesem Artikel wird ein Ansatz erläutert, um weiterhin den legacy-Hive-Metaspeicher pro Arbeitsbereich zu verwenden, wenn Ihr Azure Databricks-Arbeitsbereich für Unity-Katalog aktiviert ist.
Wenn Sich Ihr Arbeitsbereich vor der Aktivierung für den Unity-Katalog in Dienst befand, verfügt er wahrscheinlich über einen Hive-Metaspeicher, der Daten enthält, die Sie möglicherweise weiterhin verwenden möchten. In diesem Artikel wird beschrieben, wie Sie weiterhin mit Tabellen arbeiten, die in einem Hive-Metaspeicher registriert sind.
Important
Der Hive-Metaspeicher pro Arbeitsbereich ist ein Legacy-Feature, und die Anweisungen in diesem Artikel stellen veraltete Arbeitsabläufe dar.
Tabellen im Hive-Metastore profitieren nicht von allen von Unity Catalog bereitgestellten Sicherheits- und Governancefeatures, zum Beispiel von der integrierten Überwachung, Herkunft und der Zugriffssteuerung. Databricks empfiehlt, diese Tabellen und arbeitslasten zu migrieren, die auf den Unity-Katalog verweisen, und den direkten Zugriff auf den Hive-Metastore zu deaktivieren.
Es stehen zwei Migrationspfade zur Verfügung:
Aktualisieren Sie alle Tabellen, die im Hive-Metastore registriert sind, auf den Unity-Katalog.
Verbinden Sie Ihren Hive-Metaspeicher mit dem Unity-Katalog, indem Sie den Hive-Metastore-Partnerverbund verwenden, um einen schrittweiseren Ansatz zu erreichen. Der Hive-Metastore-Partnerverbund erstellt einen externen Katalog in Unity Catalog, der den Hive-Metastore spiegelt.
Siehe Upgrade von Azure Databricks-Arbeitsbereichen auf den Unity-Katalog.
Abfrage der veralteten Hive-Metadatenbank im Unity-Katalog
Der Unity Catalog-Metastore ist additiv. Das bedeutet, dass er mit dem arbeitsbereichbezogenen Hive-Metastore in Azure Databricks verwendet werden kann. Der Hive-Metastore wird im dreistufigen Namespace als Top-Level-Katalog namens hive_metastore angegeben.
Sie können beispielsweise im Hive-Legacymetastore auf eine Tabelle mit dem Namen sales_raw im Schema sales verweisen, indem Sie die folgende Notation verwenden:
SQL
SELECT * from hive_metastore.sales.sales_raw;
Python
display(spark.table("hive_metastore.sales.sales_raw"))
R
library(SparkR)
display(tableToDF("hive_metastore.sales.sales_raw"))
Scala
display(spark.table("hive_metastore.sales.sales_raw"))
Sie können den Katalog und das Schema auch mit einer USE-Anweisung angeben:
SQL
USE hive_metastore.sales;
SELECT * from sales_raw;
Python
spark.sql("USE hive_metastore.sales")
display(spark.table("sales_raw"))
R
library(SparkR)
sql("USE hive_metastore.sales")
display(tableToDF("sales_raw"))
Scala
spark.sql("USE hive_metastore.sales")
display(spark.table("sales_raw"))
Zugriffssteuerung im Unity-Katalog im Vergleich zum legacy-Hive-Metaspeicher
Wenn Sie die alte Tabellenzugriffskontrolle im Hive-Metastore konfiguriert haben, erzwingt Databricks weiterhin diese Zugriffssteuerelemente für Daten im hive_metastore Katalog bei Clustern, die im Standard-Zugriffsmodus laufen.
Das Unity-Katalog-Zugriffsmodell unterscheidet sich geringfügig von älteren Zugriffssteuerelementen:
-
Metastore: Der Unity-Katalog ist ein Objekt auf Kontoebene, und der Hive-Metaspeicher ist ein Objekt auf Arbeitsbereichsebene. Die im
hive_metastore-Katalog definierten Berechtigungen beziehen sich immer auf die lokalen Benutzer und Gruppen im Arbeitsbereich. - Kontengruppen: Die Zugriffssteuerungsrichtlinien in Unity Catalog werden auf Kontogruppen angewendet, während die Zugriffssteuerungsrichtlinien für den Hive-Metastore auf arbeitsbereichslokale Gruppen angewendet werden. Siehe Gruppenquellen.
-
USE CATALOGundUSE SCHEMABerechtigungen sind für den Katalog und das Schema für alle Vorgänge für Objekte innerhalb des Katalogs oder Schemas erforderlich: Unabhängig von den Berechtigungen eines Prinzipals für eine Tabelle muss der Prinzipal auch über die Berechtigungen für seinenUSE CATALOGübergeordneten Katalog verfügen, um auf das Schema und dieUSE SCHEMABerechtigungen für den Zugriff auf Objekte innerhalb des Schemas zuzugreifen. Bei Tabellenzugriffssteuerungen auf Arbeitsbereichsebene führt das Erteilen vonUSAGEfür den Stammkatalog andererseits automatisch dazu, dassUSAGEfür alle Datenbanken erteilt wird. Die BerechtigungUSAGEist für den Stammkatalog jedoch nicht erforderlich. -
Ansichten: Im Unity-Katalog muss der Besitzer einer Ansicht kein Besitzer der referenzierten Tabellen und Ansichten der Ansicht sein. Die Berechtigung
SELECTist ausreichend, zusammen mitUSE SCHEMAfür das übergeordnete Schema der Ansichten undUSE CATALOGfür den übergeordneten Katalog. Bei Zugriffskontrollen auf Tabellen auf der Arbeitsbereichsebene muss der Besitzer einer Ansicht auch Besitzer aller referenzierten Tabellen und Ansichten sein. -
Keine Unterstützung für
ANY FILEoderANONYMOUS FUNCTION: Im Unity-Katalog gibt es kein Konzept einesANY FILEoderANONYMOUS FUNCTIONsicherungsfähigen Elements, das es einem nicht privilegierten Benutzer ermöglicht, privilegierten Code auszuführen. -
Keine Unterstützung für
DENY: Das Unity Catalog-Berechtigungsmodell basiert auf dem Prinzip der geringsten Berechtigungen. Nicht gewährte Berechtigungen werden implizit verweigert. -
Keine
READ_METADATABerechtigungen: Der Unity-Katalog verwaltet den Zugriff auf das Anzeigen von Metadaten auf eine andere Weise. Weitere Informationen finden Sie unter Unity Catalog-Berechtigungen und sicherungsfähige Objekte.
Verknüpfungen zwischen Unity Catalog und Hive-Metastore-Objekten
Durch die dreistufige Namespacenotation können Sie die Daten in einem Unity Catalog-Metastore mit den Daten in einem Hive-Legacymetastore verknüpfen.
Note
Eine Verknüpfung mit den Daten im Legacy-Metastore von Hive funktioniert nur im Arbeitsbereich, in dem sich diese Daten befinden. Der Versuch, einen solchen Join in einem anderen Arbeitsbereich durchzuführen, führt zu einem Fehler. Azure Databricks empfiehlt, Legacytabellen und -sichten auf Unity Catalog upzugraden.
Im folgenden Beispiel werden Ergebnisse aus der Tabelle sales_current im Hive-Legacymetastore mit der Tabelle sales_historical im Unity Catalog-Metastore verknüpft, wenn die Felder order_id identisch sind.
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;
Python
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))
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")
))
Standardkatalog
Ein Standardkatalog ist für jeden Arbeitsbereich konfiguriert, der für Unity Catalog aktiviert ist.
Wenn Sie bei der Durchführung von Datenoperationen den Namen des obersten Katalogs weglassen, wird der Standardkatalog angenommen.
Der anfänglich für Ihren Arbeitsbereich konfigurierte Standardkatalog hängt davon ab, wie Ihr Arbeitsbereich für Unity Catalog aktiviert wurde:
- Wenn Ihr Arbeitsbereich für Unity Catalog automatisch aktiviert wurde, wurde der Arbeitsbereichskatalog als Standardkatalog eingestellt. Siehe Automatische Aktivierung des Unity Catalog.
- Wenn Ihr Arbeitsbereich manuell für Unity-Katalog aktiviert wurde, wurde der
hive_metastore-Katalog als Standardkatalog eingestellt.
Wenn Sie aus dem Hive-Metastore in den Unity-Katalog innerhalb eines vorhandenen Arbeitsbereichs wechseln, ist es sinnvoll, als Standardkatalog zu verwenden hive_metastore , um auswirkungen auf vorhandenen Code zu vermeiden, der auf den Hive-Metastore verweist, es sei denn, Sie haben vollständig aus dem Hive-Metaspeicher migriert.
Informationen zum Abrufen und Wechseln des Standardkatalogs finden Sie unter Verwalten des Standardkatalogs
Clusterspezifische Datenzugriffsberechtigungen
Wenn Sie den Hive-Metastore zusammen mit Unity Catalog verwenden, werden die dem Cluster zugeordneten Anmeldeinformationen für den Datenzugriff für den Zugriff auf die Daten im Hive-Metastore verwendet, aber nicht für in Unity Catalog registrierte Daten.
Wenn Benutzer*innen auf Pfade außerhalb von Unity Catalog zugreifen (beispielsweise auf einen Pfad, der nicht als Tabelle oder externer Speicherort registriert ist), werden die dem Cluster zugeordneten Anmeldeinformationen für den Zugriff verwendet.
Siehe Herstellen einer Verbindung mit Azure Data Lake Storage und Blob Storage.
Deaktivieren des Hive-Metastorezugriffs nach der Migration
Nachdem Sie Ihre Tabellen zum Unity-Katalog migriert haben, empfiehlt Databricks die explizite Deaktivierung des direkten Zugriffs auf den Hive-Metaspeicher. Standardmäßig stellen Azure Databricks-Computecluster auch nach der Migration weiterhin eine Verbindung mit dem Hive-Metastore her, es sei denn, Sie deaktivieren den Hive-Metastorezugriff explizit.
Sie können den direkten Zugriff auf den Hive-Metaspeicher im gesamten Arbeitsbereich oder einzeln pro Computecluster deaktivieren. Siehe Deaktivieren des Zugriffs auf den Hive-Metastore, der von Ihrem Azure Databricks-Arbeitsbereich verwendet wird.