Aracılığıyla paylaş


Hive Meta Veri Deposu meta verilerini Azure Synapse Analytics'ten Doku'ya geçirme

Hive Meta Veri Deposu (HMS) geçişinin ilk adımı, aktarmak istediğiniz veritabanlarını, tabloları ve bölümleri belirlemeyi içerir. Her şeyi geçirmek gerekli değildir; belirli veritabanlarını seçebilirsiniz. Geçiş için veritabanlarını tanımlarken yönetilen veya dış Spark tabloları olup olmadığını doğruladığınızdan emin olun.

HMS ile ilgili dikkat edilmesi gerekenler için Bkz. Azure Synapse Spark ile Doku arasındaki farklar.

Not

Alternatif olarak, ADLS 2. Nesil'iniz Delta tabloları içeriyorsa, ADLS 2. Nesil'de Bir Delta tablosu için OneLake kısayolu oluşturabilirsiniz.

Önkoşullar

Seçenek 1: HMS'yi lakehouse meta veri deposuna aktarma ve içeri aktarma

Geçiş için şu önemli adımları izleyin:

  • 1. Adım: Meta verileri kaynak HMS'den dışarı aktarma
  • 2. Adım: Meta verileri Fabric lakehouse'a aktarma
  • Geçiş sonrası adımlar: İçeriği doğrulama

Not

Betikler yalnızca Spark katalog nesnelerini Fabric lakehouse'a kopyalar. Varsayım, verilerin zaten kopyalanmış (örneğin, ambar konumundan ADLS 2. Nesil'e) veya yönetilen ve dış tablolarda (örneğin, kısayollar aracılığıyla tercih edilen) Fabric lakehouse'a sağlanmış olduğudur.

1. Adım: Meta verileri kaynak HMS'den dışarı aktarma

1. Adım'ın odak noktası, meta verileri kaynak HMS'den Fabric lakehouse'unuzun Dosyalar bölümüne aktarmaktır. Bu işlem aşağıdaki gibidir:

  • 1.1) HMS meta verileri dışarı aktarma not defterini Azure Synapse çalışma alanınıza aktarın. Bu not defteri veritabanlarının, tabloların ve bölümlerin HMS meta verilerini sorgular ve OneLake'teki bir ara dizine aktarır (işlevler henüz dahil değildir). Spark iç katalog API'si bu betikte katalog nesnelerini okumak için kullanılır.

  • 1.2) Meta veri bilgilerini bir ara depolamaya (OneLake) aktarmak için ilk komuttaki parametreleri yapılandırın. Kaynak ve hedef parametreleri yapılandırmak için aşağıdaki kod parçacığı kullanılır. Bunları kendi değerlerinizle değiştirdiğinden emin olun.

    
    // Azure Synapse workspace config
    var SynapseWorkspaceName = "<synapse_workspace_name>"
    
    var DatabaseNames = "<db1_name>;<db2_name>"
    var SkipExportTablesWithUnrecognizedType:Boolean = false
    
    // Fabric config
    var WorkspaceId = "<workspace_id>"
    var LakehouseId = "<lakehouse_id>"
    var ExportFolderName = f"export/${SynapseWorkspaceName}/sparkCatalogMetadata"
    
    var OutputFolder = f"abfss://${WorkspaceId}@onelake.dfs.fabric.microsoft.com/${LakehouseId}/Files/${ExportFolderName}/"
    
    
  • 1.3) Katalog nesnelerini OneLake'e aktarmak için tüm not defteri komutlarını çalıştırın. Hücreler tamamlandıktan sonra, ara çıkış dizininin altındaki bu klasör yapısı oluşturulur.

    OneLake'de HMS dışarı aktarma işlemini gösteren ekran görüntüsü.

2. Adım: Meta verileri Fabric lakehouse'a aktarma

2. adım, gerçek meta verilerin ara depolamadan Fabric lakehouse'a aktarılmasıdır. Bu adımın çıktısı, tüm HMS meta verilerinin (veritabanları, tablolar ve bölümler) geçirilmesidir. Bu işlem aşağıdaki gibidir:

  • 2.1) Göl binasının "Dosyalar" bölümünde bir kısayol oluşturun. Bu kısayol, kaynak Spark ambarı dizinine işaret etmesi gerekir ve daha sonra Spark yönetilen tablolarının yerini almak için kullanılır. Bkz. Spark ambarı dizinine işaret eden kısayol örnekleri:

    • Azure Synapse Spark ambar dizininin kısayol yolu: abfss://<container>@<storage_name>.dfs.core.windows.net/synapse/workspaces/<workspace_name>/warehouse
    • Azure Databricks ambar dizininin kısayol yolu: dbfs:/mnt/<warehouse_dir>
    • HDInsight Spark ambar dizininin kısayol yolu: abfss://<container>@<storage_name>.dfs.core.windows.net/apps/spark/warehouse
  • 2.2) HMS meta verileri içeri aktarma not defterini Doku çalışma alanınıza aktarın. Ara depolamadaki veritabanı, tablo ve bölüm nesnelerini içeri aktarmak için bu not defterini içeri aktarın. Spark iç katalog API'si bu betikte Yapı'da katalog nesneleri oluşturmak için kullanılır.

  • 2.3) İlk komuttaki parametreleri yapılandırın. Apache Spark'ta, yönetilen tablo oluşturduğunuzda, bu tablonun verileri Spark tarafından yönetilen bir konumda depolanır ve genellikle Spark'ın ambar dizininde depolanır. Tam konum Spark tarafından belirlenir. Bu, konumu belirttiğiniz ve temel alınan verileri yönettiğiniz dış tablolarla karşıttır. Yönetilen tablonun meta verilerini (gerçek verileri taşımadan) geçirdiğinizde, meta veriler eski Spark ambarı dizinine işaret eden özgün konum bilgilerini içerir. Bu nedenle, yönetilen tablolar WarehouseMappings için, 2.1. Adımda oluşturulan kısayolu kullanarak değiştirme işlemi yapmak için kullanılır. Kaynak tarafından yönetilen tüm tablolar bu betik kullanılarak dış tablolar olarak dönüştürülür. LakehouseId Adım 2.1'de oluşturulan ve kısayollar içeren göl evi anlamına gelir.

    
    // Azure Synapse workspace config
    var ContainerName = "<container_name>"
    var StorageName = "<storage_name>"
    var SynapseWorkspaceName = "<synapse_workspace_name>"
    
    // Fabric config
    var WorkspaceId = "<workspace_id>"
    var LakehouseId = "<lakehouse_id>"
    var ExportFolderName = f"export/${SynapseWorkspaceName}/sparkCatalogMetadata"
    var ShortcutName = "<warehouse_dir_shortcut_name>"
    
    var WarehouseMappings:Map[String, String] = Map(
        f"abfss://${ContainerName}@${StorageName}.dfs.core.windows.net/synapse/workspaces/${SynapseWorkspaceName}/warehouse"-> f"abfss://${WorkspaceId}@onelake.dfs.fabric.microsoft.com/${LakehouseId}/Files/${ShortcutName}"
    )
    
    var OutputFolder = f"abfss://${WorkspaceId}@onelake.dfs.fabric.microsoft.com/${LakehouseId}/Files/${ExportFolderName}/"
    
    var DatabasePrefix = ""
    var TablePrefix = ""
    var IgnoreIfExists = true
    
    
  • 2.4) Katalog nesnelerini ara yoldan içeri aktarmak için tüm not defteri komutlarını çalıştırın.

Not

Birden çok veritabanını içeri aktarırken (i) veritabanı başına bir göl evi oluşturabilir (burada kullanılan yaklaşım) veya (ii) farklı veritabanlarındaki tüm tabloları tek bir göl evi olarak taşıyabilirsiniz. İkincisi için, geçirilen tüm tablolar olabilir <lakehouse>.<db_name>_<table_name>ve içeri aktarma not defterini buna göre ayarlamanız gerekir.

3. Adım: İçeriği doğrulama

3. adım, meta verilerin başarıyla geçirildiğini doğruladığınız yerdir. Farklı örneklere bakın.

İçeri aktarılan veritabanlarını aşağıdakini çalıştırarak görebilirsiniz:

%%sql
SHOW DATABASES

Aşağıdakini çalıştırarak bir göl evindeki (veritabanındaki) tüm tabloları de kontrol edebilirsiniz:

%%sql
SHOW TABLES IN <lakehouse_name>

Aşağıdakini çalıştırarak belirli bir tablonun ayrıntılarını görebilirsiniz:

%%sql
DESCRIBE EXTENDED <lakehouse_name>.<table_name>

Alternatif olarak, içeri aktarılan tüm tablolar her lakehouse için Lakehouse gezgini kullanıcı arabirimi tabloları bölümünde görünür.

Göl evinde içeri aktarılan HMS meta verilerini gösteren ekran görüntüsü.

Dikkat edilecek diğer noktalar

  • Ölçeklenebilirlik: Buradaki çözüm içeri/dışarı aktarma yapmak için iç Spark katalog API'sini kullanıyor, ancak katalog nesnelerini almak için doğrudan HMS'ye bağlanmıyor, bu nedenle katalog büyükse çözüm iyi ölçeklendirilemedi. HMS DB kullanarak dışarı aktarma mantığını değiştirmeniz gerekir.
  • Veri doğruluğu: Yalıtım garantisi yoktur. Bu, Geçiş not defteri çalışırken Spark işlem altyapısı meta veri deposunda eşzamanlı değişiklikler yapıyorsa, Fabric lakehouse'da tutarsız verilerin getirilebileceği anlamına gelir.