Eski Hive meta veri deposundaki veritabanı nesneleri

Azure Databricks belgeleri Unity Kataloğu'nu kullanarak veri nesneleriyle çalışmaya odaklanır, ancak yönergelerin çoğu eski Hive meta veri deposunda kayıtlı nesnelerle çalışma için de geçerlidir.

Bu makalede, eski Hive meta veri deposunda kayıtlı veritabanı nesneleriyle çalışma konusuna odaklanmaktadır. Özellikle, bu makalede Hive meta veri deposu nesneleriyle çalışmanın Unity Kataloğu nesneleriyle çalışmaktan farklı olduğu durumlar ortaya çıkar. Ayrıca beklenmeyen olabilecek diğer davranışları da açıklar.

Databricks, eski Hive meta deposundaki tüm verileri Unity Kataloğu'na geçirmenizi önerir. Bkz. Hive tablolarını ve görünümlerini Unity Kataloğu'na yükseltme.

Hive meta veri deposu idaresi nasıl çalışır?

Azure Databricks çalışma alanları yerleşik Hive meta veri depolarını içermeye devam etse de Hive meta veri deposu kullanılarak veri idaresi kullanım dışı bırakılmıştır. Databricks, tüm veri idaresi için Unity Kataloğu'nu kullanmanızı önerir. Bkz Unity Kataloğu ile birlikte eski Hive meta veri deposunu kullanma.

Unity Kataloğu için bir çalışma alanının etkinleştirilmesi, Hive meta veri deposunda kayıtlı olan verilerle çalışma yeteneğinizi azaltmaz. Eski Hive meta veri deposuna kayıtlı tüm veri nesneleri, Unity Catalog arayüzlerinde hive_metastore kataloğunda görüntülenir. Hibrit bir Hive meta veri deposu ve Unity Catalog çalışma alanı, uzun süredir kullanılan bir Hive meta veri deposu çalışma alanını dönüştürmek için yararlı bir model olabilir. Ancak Unity Catalog’un veri yönetişimi ve performans açısından sunduğu avantajlar büyüktür; çalışma alanlarınızı mümkün olan en kısa sürede tamamen Unity Catalog’a geçirmelisiniz.

Hive meta veri deposu, veritabanı nesnelerine erişimi yönetmek için tablo erişim denetimini (tablo ACL'leri) kullanır. İşlemciyi standart erişim modunda kullandığınızda tabloya erişim denetimi için bazı destekler sağlanmaya devam eder. Bkz. Hive meta veri deposu tablo erişim denetimi (eski).

Kimlik bilgisi geçişi, Hive meta veri deposu veritabanı nesnelerinde veri idaresi için kullanım dışı bırakılmış bir desendir. Bu makale, kimlik bilgisi aktarma konusunu ele almaz. Bkz. Kimlik bilgisi aktarma (eski).

Not

Bu makalede Hive meta veri deposundaki veri erişim denetiminden söz edildiğinde, kastedilen eski tablo erişim denetimidir.

hive_metastore katalog nedir?

Unity Catalog için etkinleştirilmiş bir çalışma alanında, Hive meta veri deposundaki tüm şemalar, Unity Catalog’un üç düzeyli ad alanında hive_metastore kataloğunun alt öğeleri olarak görünür. Hive meta veri deposu aslında katalogları kullanmaz ve bu yapı Unity Kataloğu kullanıcıları için eski Hive meta veri deposundaki tablolara bir giriş noktası sağlar. Eski Hive meta veri deposundaki tabloları sorgulamak için aşağıdaki söz dizimini kullanın:

SELECT * FROM hive_metastore.schema_name.table_name

Not

İsteğe bağlı olarak, Unity Kataloğu etkin çalışma alanlarında kataloğu varsayılan çalışma alanı olarak ayarlayabilirsiniz hive_metastore . Bkz. Varsayılan kataloğu yönetme.

Hive meta veri deposundaki şemalar

Eski Hive meta veri deposunda şema, veri nesnesi hiyerarşisindeki en yüksek düzeydir.

Unity Kataloğu ile Hive meta veri deposu arasında aşağıdakiler de dahil olmak üzere bazı önemli farklar vardır:

  • Katalog Gezgini'ni kullanarak Hive meta veri deposunda şema oluşturamazsınız. Şemaların izinlerini görüntüleyebilir ve düzenleyebilirsiniz.
  • Hive meta veri deposunda oluşturulan şemalar adlarında yalnızca alfasayısal ASCII karakterleri ve alt çizgi kullanabilir.
  • Hive metastore'u, oluşturma sırasında bir şema için LOCATION tanımlamanıza olanak tanır. Bu, Unity Kataloğu yönetilen depolama konumlarına benzer şekilde çalışır ve aşağıdaki davranış farklılıklarına sahiptir:
    • Konum sağlamazsanız, varsayılan konum /user/hive/warehouse/<schema-name> kullanılır. Bu konum DBFS kökündedir ve üretim verilerini depolamak için önerilmez.
    • Sağlanan yol, bulut URI'leri, DBFS kökü ve DBFS bağlamaları dahil olmak üzere şemayı oluşturan kullanıcının kullanabileceği herhangi bir bulut depolama konumu olabilir.
    • Konuma erişim Hive metastore tarafından yönetilmiyor.
    • Hive meta veri deposunda bir şemanın silinmesi, tablo türü ne olursa olsun (yönetilen veya dış) bu şema konumundaki tüm dosyaların özyinelemeli olarak silinmesine neden olur.

Yanlışlıkla veri kaybını önlemek için Databricks, Hive meta veri deposu şema konumlarıyla çalışırken aşağıdakileri önerir:

  • Zaten veri içeren bir şema konumu atamayın.
  • Şema konumunda dış tablo oluşturmayın.
  • Birden çok şema arasında konum paylaşmayın.
  • Başka bir şema konumuyla çakışan bir konumu atamayın. Başka bir deyişle, başka bir şema konumunun alt öğesi olan bir yol kullanmayın.
  • Dış tablonun konumuyla çakışan bir şema konumu atamayın.

Hive meta veri deposunda yönetilen tablolar

Hive meta veri deposundaki yönetilen tablolar, Unity Kataloğu'ndaki yönetilen tabloların performans avantajlarından herhangi birine sahip değildir. Unity Kataloğu yönetilen tabloları gibi Hive meta veri deposu yönetilen tabloları da varsayılan olarak Delta Lake kullanır. Ancak Hive meta veri deposunda Unity Kataloğu'nun aksine, Azure Databricks tarafından desteklenen diğer veri biçimlerinin çoğunu kullanarak yönetilen bir tablo da oluşturabilirsiniz.

Hive meta veri deposundaki yönetilen tablolar her zaman içeren şemanın depolama konumunda oluşturulur. Yönetilen bir tabloyu sorgulamak için kullandığınız işlem kaynağının depolama konumuna erişimi olmalıdır.

Hive meta veri deposu, yönetilen tabloların veri düzenini Unity Kataloğu'nun yönettiği gibi yönetmez. Yönetilen bir tabloyu Hive meta veri deposuna bıraktığınızda, temel alınan tüm veri dosyaları hemen silinir. Unity Kataloğu'nda ise yönetilen bir tabloyu 7 gün boyunca kullanabilirsiniz UNDROP ve veriler 30 gün içinde kalıcı olarak silinir.

Hive meta veri deposu yönetilen tablolarında verileri okumak veya yazmak için yol tabanlı erişimi kullanabilirsiniz; Unity Kataloğu'nda ise bunu yapmanız gerekmez ve kullanamazsınız.

Hive meta veri deposundaki dış tablolar

Unity Kataloğu'nun kullanıma sunulmasından önce Azure Databricks'te oluşturulan tabloların çoğu Hive meta veri deposunda dış tablolar olarak yapılandırıldı. Dış tabloları tercih eden önceki öneriler genellikle birkaç temel noktaya odaklanıyordu:

  • Bulut nesne depolama alanında mevcut verilerin üzerine bir dış tablo kaydedebilirsiniz.
  • Okuma veya yazma işlemleri için dış sistemlerden dış tablolardaki veri dosyalarına doğrudan erişebilirsiniz.
  • Tablo yanlışlıkla kaldırıldıysa veri dosyaları silinmedi.
  • Dış tablolar bir LOCATIONgerektirdiğinden, üretim verilerinin yanlışlıkla DBFS kökünde sonuçlanma olasılığı daha azdı.

Azure Databricks artık çoğu tablosal veri depolaması için Unity Kataloğu yönetilen tablolarını önerir. Bkz. Delta Lake ve Apache Iceberg için Unity Catalog tarafından yönetilen tablolar.

Hive meta veri deposundaki görünümler

Hive metastore'da, Azure Databricks'in desteklediği herhangi bir veri kaynağını temel alan bir görünüm tanımlayabilirsiniz. Unity Catalog'da yalnızca yabancı tablolar, somutlaştırılmış görünümler ve OpenSharing tabloları dahil olmak üzere Unity Catalog tabloları ve görünümleri üzerinde görünümler tanımlayabilirsiniz.

Tablosal olmayan veri kaynaklarına karşı görünüm bildirme özelliği nedeniyle Hive meta veri deposundaki görünümler, kullanıcı ortamındaki diğer erişim yapılandırmalarıyla birlikte verilere beklenmeyen veya istenmeyen erişim verebilir.

Örneğin, aşağıdakileri göz önünde bulundurun:

  • Tablo my_table , DBFS bağlama yolu /mnt/my_tablekullanılarak tanımlanır.
    • DBFS bağlama kimlik bilgileri çalışma alanında depolandığından, tüm kullanıcılar varsayılan olarak bu yola erişebilir.
  • Tablo ACL'leri, bir kullanıcı grubuna erişimi kısıtlamak my_table için kullanılır.
    • Eski tablo ACL'leri yalnızca standart erişim modu veya SQL ambarlarıyla yapılandırılmış işlemlerde geçerlidir.
  • my_view Bir görünüm, aynı veri dosyalarını temel alan bulut URI’si 'abfss://container-name@storage-account-name.dfs.core.windows.net/my_table' üzerinde doğrudan tanımlanır.
    • URI kimlik bilgileri Spark oturumunda veya işlem yapılandırmasında tanımlanan erişim ilkelerine dayanır.

Görünüm my_view aşağıdaki özelliklere sahiptir:

  • Bulut nesne depolamasını /mnt/my_table'a bağlamak için kullanılan DBFS bağlama kimlik bilgilerini kullanmaz.
  • İşlem yapılandırmalarından bağımsız olarak üzerinde my_tableayarlanan tablo ACL'lerine saygı göstermez.
  • 'abfss://container-name@storage-account-name.dfs.core.windows.net/my_table' için okuma erişimi sağlayan, işlem için yapılandırılmış bir veri erişimi ilkesi gerektirir.

Not

Bu, karşılaşabileceğiniz beklenmedik davranışlara bir örnektir ve eski Hive metastore’undaki görünümlerin ortaya çıkarabileceği tüm olası sorunların kapsamlı bir listesi değildir. Databricks, tüm görünüm tanımları için Unity Kataloğu'nu kullanmanızı önerir.

Eski Hive tabloları ve HiveQL desteği

Azure Databricks, Hive tabloları ve HiveQL işlevleri için bazı eski destek içerir. Bu işlevsellik, Azure Databricks'in ve Apache Hadoop araç ekosisteminin önceki sürümlerinin bir parçasıdır. Databricks, Hive tablolarının veya diğer Hive işlevlerinin kullanılmasını önermez. Bu işlev iyileştirilmiş değildir ve bazı işlem yapılandırmalarında destek sağlamaz.

Aşağıdaki makalelerde eski Hive işlevleri açıklanmaktadır: