Arbeta med Unity Catalog och legacy Hive-metaarkivet
Den här artikeln beskriver hur du använder Hive-metaarkivet per arbetsyta när din Azure Databricks-arbetsyta är aktiverad för Unity Catalog.
Om din arbetsyta var i tjänst innan den aktiverades för Unity Catalog har den förmodligen ett Hive-metaarkiv som innehåller data som du vill fortsätta att använda. Databricks rekommenderar att du migrerar tabellerna som hanteras av Hive-metaarkivet till Unity Catalog-metaarkivet, men om du väljer att inte göra det förklarar den här artikeln hur du arbetar med data som hanteras av båda metaarkiven.
Fråga Hive-metaarkivet i Unity Catalog
Unity Catalog-metaarkivet är additivt, vilket innebär att det kan användas med Hive-metaarkivet per arbetsyta i Azure Databricks. Hive-metaarkivet visas som en toppnivåkatalog som heter hive_metastore
i namnområdet på tre nivåer.
Du kan till exempel referera till en tabell som heter sales_raw
i sales
schemat i det äldre Hive-metaarkivet med hjälp av följande notation:
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"))
Du kan också ange katalogen och schemat med en USE
instruktion:
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"))
Åtkomstkontroll i Unity Catalog och Hive-metaarkivet
Om du har konfigurerat tabellåtkomstkontroll i Hive-metaarkivet fortsätter Databricks att tillämpa dessa åtkomstkontroller för data i hive_metastore
katalogen för kluster som körs i läget för delad åtkomst. Åtkomstmodellen för Unity Catalog skiljer sig något från äldre åtkomstkontroller, till exempel inga DENY
instruktioner. Hive-metaarkivet är ett objekt på arbetsytenivå. Behörigheter som definierats i hive_metastore
katalogen refererar alltid till de lokala användarna och grupperna på arbetsytan. Se Skillnader från tabellåtkomstkontroll.
Skillnader från tabellåtkomstkontroll
Unity Catalog har följande viktiga skillnader från att använda tabellåtkomstkontroller i det äldre Hive-metaarkivet på varje arbetsyta.
Åtkomstkontrollmodellen i Unity Catalog har följande skillnader jämfört med tabellåtkomstkontroll:
- Kontogrupper: Principer för åtkomstkontroll i Unity-katalog tillämpas på kontogrupper, medan principer för åtkomstkontroll för metaarkivet i Hive tillämpas på arbetsytelokala grupper. Se Skillnaden mellan kontogrupper och arbetsytelokala grupper.
USE CATALOG
ochUSE SCHEMA
behörigheter krävs för katalogen och schemat för alla åtgärder på objekt i katalogen eller schemat: Oavsett ett huvudnamns behörigheter i en tabell måste huvudkontot också ha behörighet påUSE CATALOG
sin överordnade katalog för att få åtkomst till schemat och behörighetenUSE SCHEMA
att komma åt objekt i schemat. Med tabellåtkomstkontroller på arbetsytenivå ges, å andra sidan, behörighetUSAGE
för rotkatalogen automatisk behörighetUSAGE
för alla databaser. Detta krävs dock inteUSAGE
för rotkatalogen.- Vyer: I Unity-katalogen behöver ägaren av en vy inte vara ägare till vyns refererade tabeller och vyer. Behörigheten
SELECT
är tillräcklig, tillsammans medUSE SCHEMA
vyernas överordnade schema ochUSE CATALOG
i den överordnade katalogen. Med åtkomstkontroller för tabell på arbetsytenivå måste en vys ägare vara ägare till alla refererade tabeller och vyer. - Inget stöd för eller
ANONYMOUS FUNCTION
: I Unity Catalog finns det inget koncept för enANY FILE
ellerANONYMOUS FUNCTION
ett skydd som kan göra det möjligt förANY FILE
en icke privilegierad användare att köra privilegierad kod. - Ingen
READ_METADATA
behörighet: Unity Catalog hanterar åtkomst för att visa metadata på ett annat sätt. Se Behörigheter och skyddsbara objekt i Unity Catalog.
Kopplingar mellan Unity Catalog- och Hive-metaarkivobjekt
Genom att använda notering på tre nivåer kan du koppla data i ett Unity Catalog-metaarkiv med data i det äldre Hive-metaarkivet.
Kommentar
En koppling med data i det äldre Hive-metaarkivet fungerar bara på arbetsytan där dessa data finns. Om du försöker köra en sådan koppling i en annan arbetsyta uppstår ett fel. Azure Databricks rekommenderar att du uppgraderar äldre tabeller och vyer till Unity Catalog.
I följande exempel kopplas resultat från sales_current
tabellen i det äldre Hive-metaarkivet sales_historical
med tabellen i Unity Catalog-metaarkivet när fälten order_id
är lika.
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
En standardkatalog konfigureras för varje arbetsyta som är aktiverad för Unity Catalog.
Om du utelämnar katalognamnet på den översta nivån när du utför dataåtgärder antas standardkatalogen.
Standardkatalogen som ursprungligen konfigurerades för din arbetsyta beror på hur din arbetsyta har aktiverats för Unity Catalog:
- Om arbetsytan aktiverades automatiskt för Unity Catalog angavs arbetsytekatalogen som standardkatalog. Se Automatisk aktivering av Unity Catalog.
- Om din arbetsyta har aktiverats för Unity Catalog manuellt
hive_metastore
angavs katalogen som standardkatalog.
Om du övergår från Hive-metaarkivet till Unity Catalog på en befintlig arbetsyta är det vanligtvis klokt att använda hive_metastore
som standardkatalog för att undvika att påverka befintlig kod som refererar till hive-metaarkivet.
Information om hur du hämtar och växlar standardkatalogen finns i Hantera standardkatalogen
Behörigheter för klusteromfattande dataåtkomst
När du använder Hive-metaarkivet tillsammans med Unity Catalog används autentiseringsuppgifter för dataåtkomst som är associerade med klustret för att komma åt Hive-metaarkivdata men inte data som registrerats i Unity Catalog.
Om användarna kommer åt sökvägar som ligger utanför Unity Catalog (till exempel en sökväg som inte har registrerats som en tabell eller extern plats) används de åtkomstautentiseringsuppgifter som tilldelats klustret.
Se Ansluta till Azure Data Lake Storage Gen2 och Blob Storage.
Uppgradera äldre tabeller till Unity Catalog
Tabeller i Hive-metaarkivet drar inte nytta av den fullständiga uppsättningen säkerhets- och styrningsfunktioner som Unity Catalog introducerar, till exempel inbyggd granskning och åtkomstkontroll. Databricks rekommenderar att du uppgraderar dina äldre tabeller genom att lägga till dem i Unity Catalog.