Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
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:
Hive meta veri deposunda kayıtlı tüm tabloları Unity Kataloğu'na yükseltin.
Daha aşamalı bir yaklaşım için Hive Meta Veri Deposu federasyonunu kullanarak Hive meta veri deponuzu Unity Kataloğu'na birleştirin. Hive meta veri deposu federasyonu, Unity Kataloğu'nda Hive meta veri deposunu yansıtan bir harici katalog oluşturur.
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 veUSE 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ğundaUSE CATALOG
ayrıcalığına ve şema içindeki nesnelere erişmek içinUSE SCHEMA
ayrıcalığına sahip olmalıdır. Öte yandan, çalışma alanı düzeyinde tablo erişim denetimlerinde, kök katalogdaUSAGE
izni vermek, tüm veritabanlarında otomatik olarakUSAGE
izni verir ancakUSAGE
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 katalogdaUSE SCHEMA
ile birlikteUSE 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
veyaANONYMOUS 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 veyaANY 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.