Aracılığıyla paylaş


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 ve eski Hive meta veri deposuyla çalışma.

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 kaydedilen tüm veri nesneleri, katalogdaki Unity Kataloğu arabirimlerinde hive_metastore gösterilir. Karma Hive meta veri deposu ve Unity Kataloğu çalışma alanı, uzun süredir devam eden bir Hive meta veri deposu çalışma alanına geçiş için kullanışlı bir model olabilir. Ancak Unity Kataloğu'nun veri idaresi ve performans avantajları yüksektir ve çalışma alanlarınızı en kısa sürede tamamen geçirmelisiniz.

Hive meta veri deposu, veritabanı nesnelerine erişimi yönetmek için tablo erişim denetimini (tablo ACL'leri) kullanır. Paylaşılan erişim modunda işlem kullandığınızda tablo erişim denetimi için bazı destek 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 makalede kimlik bilgisi geçişi ele alınmaz. Bkz. Kimlik bilgisi geçişi (eski).

Not

Bu makale Hive meta veri deposundaki veri erişim denetimine başvuruyorsa, eski tablo erişim denetimine başvurur.

Katalog nedir hive_metastore ?

Unity Kataloğu için etkinleştirilmiş bir çalışma alanında, Hive meta veri deposundaki tüm şemalar Unity Kataloğu üç düzeyli ad alanında kataloğun alt öğeleri hive_metastore 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 meta veri deposu oluşturma sırasında bir LOCATION şema için bildirmenizi sağlar. 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 meta veri deposu 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 atayı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 şema konumu atayı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 atayı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 tabloyu sorgulamak için kullandığınız işlem depolama konumuna erişmelidir.

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 eski öneriler genellikle birkaç önemli unsura odaklanmıştır:

  • 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 bırakıldıysa veri dosyaları silinmez.
  • 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. Yönetilen tablolarla çalışma.

Hive meta veri deposundaki görünümler

Hive meta veri deposunda Azure Databricks tarafından desteklenen herhangi bir veri kaynağı tarafından desteklenen bir görünüm bildirebilirsiniz. Unity Kataloğu'nda, yalnızca yabancı tablolar, gerçekleştirilmiş görünümler ve Delta Sharing tabloları da dahil olmak üzere Unity Kataloğu tablo ve görünümlerinde görünümleri bildirebilirsiniz.

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 paylaşılan erişim modu veya SQL ambarlarıyla birleştirilmiş işlemlerde geçerlidir.
  • my_view Görünüm, aynı veri dosyalarının 'abfss://container-name@storage-account-name.dfs.core.windows.net/my_table'desteklenmesi için doğrudan bulut URI'sine karşı 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.
  • için okuma erişimi sağlayan işlem için yapılandırılmış bir veri erişim 'abfss://container-name@storage-account-name.dfs.core.windows.net/my_table'ilkesi gerektirir.

Not

Bu, karşılaşabileceğiniz beklenmeyen davranışların bir örneğidir ve eski Hive meta veri deposundaki görünümler tarafından sunulan tüm olası tuzakları kapsamlı olarak kapsamaz. 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: