Unity Kataloğu ve eski Hive meta veri deposu ile çalışma

Bu makalede, Unity Kataloğu için Azure Databricks çalışma alanınız etkinleştirildiğinde çalışma alanı başına Hive meta veri deposunun nasıl kullanılacağı açıklanmaktadır.

Çalışma alanınız Unity Kataloğu için etkinleştirilmeden önce hizmetteyse, büyük olasılıkla kullanmaya devam etmek istediğiniz verileri içeren bir Hive meta deposu vardır. Databricks, Hive meta veri deposu tarafından yönetilen tabloları Unity Kataloğu meta deposuna geçirmenizi önerir, ancak geçirmemeyi seçerseniz, bu makalede her iki meta veri deposu tarafından yönetilen verilerle nasıl çalışabileceğiniz açıklanır.

Unity Kataloğu'nda Hive meta veri deposunu sorgulama

Unity Kataloğu meta veri deposu eklenmiştir; başka bir deyişle Azure Databricks'teki çalışma alanı başına Hive meta veri deposu ile kullanılabilir. Hive meta veri deposu, üç düzeyli ad alanında adlı hive_metastore üst düzey bir katalog olarak görünür.

Örneğin, aşağıdaki gösterimi kullanarak eski Hive meta veri deposundaki şemada sales adlı sales_raw bir tabloya başvurabilirsiniz:

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"))

Ayrıca, bir deyimiyle USE kataloğu ve şemayı belirtebilirsiniz:

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"))

Unity Kataloğu ve Hive meta veri deposunda erişim denetimi

Hive meta veri deposunda tablo erişim denetimini yapılandırdıysanız Databricks, paylaşılan erişim modunda çalışan kümeler için katalogdaki hive_metastore veriler için bu erişim denetimlerini zorlamaya devam eder. Unity Kataloğu erişim modeli, deyimsiz DENY gibi eski erişim denetimlerinden biraz farklıdır. Hive meta veri deposu çalışma alanı düzeyinde bir nesnedir. Katalogda hive_metastore tanımlanan izinler her zaman çalışma alanında yerel kullanıcılara ve gruplara başvurur. Bkz. Tablo erişim denetimindeki farklar.

Tablo erişim denetiminden farklar

Unity Kataloğu,her çalışma alanında eski Hive meta veri deposunda tablo erişim denetimlerini kullanmaktan aşağıdaki temel farklara sahiptir.

Unity Kataloğu'ndaki erişim denetimi modeli, tablo erişim denetiminden aşağıdaki farklılıklara sahiptir:

  • Hesap grupları: Unity Kataloğu'ndaki erişim denetimi ilkeleri hesap gruplarına, Hive meta veri deposunun erişim denetimi ilkeleri ise çalışma alanı yerel gruplarına uygulanır. Bkz. Hesap grupları ve çalışma alanı-yerel gruplar arasındaki fark.
  • USE CATALOGkatalog USE SCHEMA ve şemada, katalog veya şema içindeki nesneler üzerindeki tüm işlemler için izinler gereklidir: Bir sorumlunun tablodaki ayrıcalıklarından bağımsız olarak, sorumlunun şemaya erişmek için üst kataloğunda ayrıca ayrıcalığına ve USE SCHEMA şema içindeki nesnelere erişme ayrıcalığına sahip USE CATALOG olması gerekir. Öte yandan, çalışma alanı düzeyinde tablo erişim denetimlerinde, kök katalogda USAGE izni vermek, tüm veritabanlarında otomatik olarak USAGE izni verir ancak USAGE kök katalogda gerekli değildir.
  • Görünümler: Unity Kataloğu'nda bir görünümün sahibinin, görünümün başvurulan tablolarının ve görünümlerinin sahibi olması gerekmez. Ayrıcalığına sahip olmak, USE SCHEMA görünümlerin SELECT üst şemasında ve USE CATALOG üst katalogda yeterlidir. Çalışma alanı düzeyinde tablo erişim denetimleriyle, görünümün sahibinin başvurulan tüm tabloların ve görünümlerin sahibi olması gerekir.
  • veyaANONYMOUS FUNCTION için ANY FILE destek yok: Unity Kataloğu'nda ayrıcalıksız bir ANY FILE kullanıcının ayrıcalıklı kod çalıştırmasına izin veren veya ANONYMOUS FUNCTION güvenliği sağlanabilir kavramı yoktur.
  • Ayrıcalık yokREAD_METADATA: Unity Kataloğu, meta verileri görüntüleme erişimini farklı bir şekilde yönetir. Bkz . Unity Kataloğu ayrıcalıkları ve güvenliği sağlanabilir nesneler.

Unity Kataloğu ile Hive meta veri deposu nesneleri arasında birleştirmeler

Üç düzeyli ad alanı gösterimini kullanarak, Unity Kataloğu meta veri deposundaki verileri eski Hive meta veri deposundaki verilerle birleştirebilirsiniz.

Not

Eski Hive meta veri deposundaki verilerle birleştirme yalnızca verilerin bulunduğu çalışma alanında çalışır. Böyle bir birleştirmeyi başka bir çalışma alanında çalıştırmaya çalışmak hatayla sonuçlanır. Azure Databricks, eski tabloları ve görünümleri Unity Kataloğu'na yükseltmenizi önerir.

Aşağıdaki örnek, alanlar eşit olduğunda eski Hive meta veri deposundaki tablodan sales_historical alınan sonuçları sales_current Unity Kataloğu meta veri deposundaki order_id tabloyla birleştirir.

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")
))

Varsayılan katalog

Unity Kataloğu için etkinleştirilen her çalışma alanı için varsayılan bir katalog yapılandırılır.

Veri işlemleri gerçekleştirirken en üst düzey katalog adını atlarsanız varsayılan katalog varsayılır.

Başlangıçta çalışma alanınız için yapılandırılan varsayılan katalog, çalışma alanınızın Unity Kataloğu için nasıl etkinleştirildiğine bağlıdır:

  • Çalışma alanınız Unity Kataloğu için otomatik olarak etkinleştirildiyse, çalışma alanı kataloğu varsayılan katalog olarak ayarlanmıştır. Bkz . Unity Kataloğu'nun otomatik olarak etkinleştirilmesi.
  • Çalışma alanınız Unity Kataloğu için el ile etkinleştirildiyse, hive_metastore katalog varsayılan katalog olarak ayarlanmıştır.

Hive meta veri deposundan var olan bir çalışma alanında Unity Kataloğu'na geçiş yapıyorsanız, hive meta veri deposuna başvuran mevcut kodu etkilememek için varsayılan katalog olarak kullanmak hive_metastore genellikle mantıklıdır.

Varsayılan kataloğu alma ve değiştirme hakkında bilgi edinmek için bkz . Varsayılan kataloğu yönetme

Küme kapsamlı veri erişim izinleri

Unity Kataloğu'yla birlikte Hive meta veri deposu kullandığınızda, kümeyle ilişkili veri erişim kimlik bilgileri Hive meta veri deposu verilerine erişmek için kullanılır, ancak Unity Kataloğu'nda kayıtlı verilere erişilir.

Kullanıcılar Unity Kataloğu dışındaki yollara (tablo veya dış konum olarak kaydedilmemiş bir yol gibi) erişiyorsa, kümeye atanan erişim kimlik bilgileri kullanılır.

Bkz. Azure Data Lake Storage 2. Nesil ve Blob Depolama Bağlan.

Eski tabloları Unity Kataloğu'na yükseltme

Hive meta veri deposundaki tablolar, Unity Kataloğu'nun yerleşik denetim ve erişim denetimi gibi sağladığı tüm güvenlik ve idare özelliklerinden yararlanmaz. Databricks, eski tablolarınızı Unity Kataloğu'na ekleyerek yükseltmenizi önerir.