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.
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 Azure Synapse Spark ile Fabric arasındaki farklara bakın.
Not
Alternatif olarak, ADLS 2. Nesil'iniz Delta tabloları içeriyorsa, ADLS 2. Nesil'deki bir Delta tablosuna OneLake kısayolu oluşturabilirsiniz.
Önkoşullar
- Henüz bir çalışma alanınız yoksa, kiracı hesabınızda bir Fabric çalışma alanı oluşturun.
- Henüz bir tane yoksa çalışma alanınızda bir Fabric lakehouse oluşturun.
Seçenek 1: HMS'yi lakehouse meta veri deposuna dışa aktarma ve içe aktarma
Geçiş için şu önemli adımları izleyin:
- 1. Adım: Meta verileri kaynak HMS'den dışarı aktarma
- Adım 2: Meta verileri Fabric'te Lakehouse'a İçe Aktarın
- Geçiş sonrası adımlar: İçeriği doğrulama
Not
Scriptler sadece Spark katalog nesnelerini Fabric'teki göl evine kopyalar. Varsayım, verilerin zaten kopyalanmış olduğudur (örneğin, depo konumundan ADLS Gen2'ye) veya yönetilen ve harici tablolar için (örneğin, kestirmeler aracılığıyla—tercih edilir) Fabric'teki göl evine erişilebilir olmasıdır.
1. Adım: Meta verileri kaynak HMS'den dışarı aktarma
Step 1'in odağı, meta verileri kaynak HMS'den Fabric'teki göl evinizin 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.
Adım 2: Meta verileri Fabric'te Lakehouse'a İçe Aktarın
2. adım, gerçek meta verilerin ara depolamadan Fabric'teki göl evine 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) Lakehouse'un "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
- Azure Synapse Spark ambar dizininin kısayol yolu:
2.2) HMS meta verileri içeri aktarma not defterini Fabric çalışma alanınıza içeri 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
WarehouseMappingsiç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.LakehouseIdAdı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 = true2.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, taşınan tüm tablolar <lakehouse>.<db_name>_<table_name> olabilir 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, her bir lakehouse için içeri aktarılan tüm tablolar, Lakehouse gezgini kullanıcı arayüzünün tablolar bölümünde görünür.
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: İzolasyon garantisi yoktur, yani Spark hesaplama motoru göç defteri çalışırken metastore'da eşzamanlı değişiklikler yapıyorsa, tutarsız veriler Fabric'teki Lakehouse'da getirilebilir.
İlgili içerik
- Fabric ve Azure Synapse Spark Karşılaştırması
- Geçiş seçenekleri hakkında daha fazla bilgi edinin: Spark havuzları, yapılandırmalar, kitaplıklar, not defterleri ve Spark iş tanımı