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 och USE 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örigheten USE SCHEMA att komma åt objekt i schemat. Med tabellåtkomstkontroller på arbetsytenivå ges, å andra sidan, behörighet USAGE för rotkatalogen automatisk behörighet USAGE för alla databaser. Detta krävs dock inte USAGE 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 med USE SCHEMA vyernas överordnade schema och USE 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 en ANY FILE eller ANONYMOUS FUNCTION ett skydd som kan göra det möjligt för ANY 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 Anslut 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.