Aracılığıyla paylaş


Unity Kataloğu ile birlikte çalışarak eski Hive meta veri deposunu kullanma

Bu makalede, Azure Databricks çalışma alanınız Unity Kataloğu için etkinleştirildiğinde eski çalışma alanı başına Hive meta veri depolarını kullanmaya devam etme yaklaşımı 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 isteyebileceğiniz verileri içeren bir Hive meta deposu vardır. Bu makalede, Hive meta veri deposuna kaydedilmiş tablolarla çalışmaya devam etme işlemi açıklanmaktadır.

Önemli

Çalışma alanı başına Hive meta veri deposu eski bir özelliktir ve bu makalede sağlanan yönergeler eski iş akışlarını temsil eder.

Hive meta veri deposundaki tablolar, Unity Kataloğu tarafından sağlanan yerleşik denetim, köken ve erişim denetimi gibi tam güvenlik ve idare özelliklerinden yararlanmaz. Databricks, bu tabloları ve bunlara başvuran iş yüklerini Unity Kataloğu'na geçirmenizi ve Hive meta veri deposuna doğrudan erişimi devre dışı bırakmanızı önerir.

İki geçiş yolu vardır:

Bkz . Azure Databricks çalışma alanlarını Unity Kataloğu'na yükseltme.

Unity Kataloğu'nda eski Hive meta deposunu sorgulama

Unity Kataloğu meta veri deposu, eklemeli bir yapıya sahiptir; yani Azure Databricks'teki çalışma alanı başına kullanılan Hive meta veri deposuyla birlikte kullanılabilir. Hive meta veri deposu, üç düzeyli ad alanında hive_metastore olarak adlandırılan üst düzey bir katalog şeklinde görünür.

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

SQL

SELECT * from hive_metastore.sales.sales_raw;

Piton

display(spark.table("hive_metastore.sales.sales_raw"))

R

library(SparkR)

display(tableToDF("hive_metastore.sales.sales_raw"))

Scala programlama dili

display(spark.table("hive_metastore.sales.sales_raw"))

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

SQL

USE hive_metastore.sales;
SELECT * from sales_raw;

Piton

spark.sql("USE hive_metastore.sales")
display(spark.table("sales_raw"))

R

library(SparkR)

sql("USE hive_metastore.sales")
display(tableToDF("sales_raw"))

Scala programlama dili

spark.sql("USE hive_metastore.sales")
display(spark.table("sales_raw"))

Unity Kataloğu'nda eski Hive meta veri deposuyla karşılaştırıldığında erişim denetimi

Hive meta veri deposunda eski tablo erişim denetimi yapılandırdıysanız, Databricks, standart erişim modunda çalışan kümeler için hive_metastore kataloğundaki veriler üzerinde bu erişim denetimlerini uygulamaya devam eder.

Unity Kataloğu erişim modeli eski erişim denetimlerinden biraz farklıdır:

  • Meta veri deposu: Unity Kataloğu hesap düzeyinde bir nesnedir ve 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.
  • 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. Grup kaynakları.
  • USE CATALOG katalog ve USE SCHEMA ş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, sorumlu üst kataloğunda USE CATALOG ayrıcalığına ve şema içindeki nesnelere erişmek için USE SCHEMA ayrıcalığına sahip olmalıdır. Ö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şvuruda bulunan tablo ve görünümlerinin sahibi olması gerekmez. Yetkiye sahip olmak, görünümlerin üst şemasında SELECT ve üst katalogda USE SCHEMA ile birlikte USE CATALOG yeterlidir. Çalışma alanı düzeyindeki tablo erişim denetimleriyle, görünümün sahibinin başvuruda bulunılan tüm tabloların ve görünümlerin sahibi olması gerekir.
  • ANY FILE veya ANONYMOUS FUNCTION için destek yok: Unity Kataloğu'nda ayrıcalıksız bir kullanıcının ayrıcalıklı kod çalıştırmasına izin veren bir veya ANY FILE güvenliği sağlanabilir kavramı yoktur.
  • DENY için destek yok: Unity Kataloğu ayrıcalık modeli en az ayrıcalık ilkesine göre oluşturulmuştur. Verilmeyen ayrıcalıklar örtük olarak reddedilir.
  • Hiçbir READ_METADATA ayrıcalık: 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ğlanabilecek 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_current alınan sonuçları sales_historical 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;

Piton

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 programlama dili

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 deposu kullandığınız mevcut bir çalışma alanında Unity Kataloğu'na geçiş yapıyorsanız ve Hive meta deposundan tamamen geçmediyseniz, mevcut kodları etkilememek için varsayılan katalog olarak hive_metastore kullanmanız 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 kapsamı 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şmek için kullanılmaz.

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.

Bakınız Azure Data Lake Storage ve Blob Depolamaya Bağlanma.