Sdílet prostřednictvím


Migrace metadat metastoru Hive z Azure Synapse do prostředků infrastruktury

Počáteční krok migrace metastoru Hive (HMS) zahrnuje určení databází, tabulek a oddílů, které chcete přenést. Není nutné migrovat všechno; můžete vybrat konkrétní databáze. Při identifikaci databází pro migraci nezapomeňte ověřit, jestli existují spravované nebo externí tabulky Sparku.

Důležité informace o HMS najdete v rozdílech mezi Azure Synapse Sparkem a prostředky infrastruktury.

Poznámka:

Pokud ADLS Gen2 obsahuje tabulky Delta, můžete také vytvořit zástupce OneLake tabulky Delta v ADLS Gen2.

Požadavky

Možnost 1: Export a import HMS do metastoru lakehouse

Při migraci postupujte podle těchto klíčových kroků:

  • Krok 1: Export metadat ze zdrojového HMS
  • Krok 2: Import metadat do fabric lakehouse
  • Kroky po migraci: Ověření obsahu

Poznámka:

Skripty kopírují pouze objekty katalogu Spark do Fabric Lakehouse. Předpokladem je, že data se už kopírují (například z umístění skladu do ADLS Gen2) nebo jsou k dispozici pro spravované a externí tabulky (například prostřednictvím zástupců – upřednostňovaných) do jezera Fabric.

Krok 1: Export metadat ze zdrojového HMS

Cílem kroku 1 je exportovat metadata ze zdrojového HMS do části Soubory vašeho fabric lakehouse. Tento proces je následující:

  • 1.1) Importujte poznámkový blok metadat HMS do pracovního prostoru Azure Synapse. Tento poznámkový blok se dotazuje a exportuje metadata HMS databází, tabulek a oddílů do zprostředkujícího adresáře ve OneLake (funkce ještě nejsou zahrnuté). Rozhraní API interního katalogu Sparku se v tomto skriptu používá ke čtení objektů katalogu.

  • 1.2) Nakonfigurujte parametry v prvním příkazu pro export informací o metadatech do přechodného úložiště (OneLake). Následující fragment kódu slouží ke konfiguraci zdrojových a cílových parametrů. Nezapomeňte je nahradit vlastními hodnotami.

    
    // 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) Spuštěním všech příkazů poznámkového bloku exportujte objekty katalogu do OneLake. Po dokončení buněk se vytvoří tato struktura složek v zprostředkujícím výstupním adresáři.

    Screenshot showing HMS export in OneLake.

Krok 2: Import metadat do fabric lakehouse

Krok 2 spočívá v importu skutečných metadat z přechodného úložiště do objektu Fabric Lakehouse. Výstupem tohoto kroku je migrace všech metadat HMS (databází, tabulek a oddílů). Tento proces je následující:

  • 2.1) Vytvořte zástupce v části Soubory v jezeře. Tento zástupce musí odkazovat na zdrojový adresář skladu Sparku a později se použije k nahrazení spravovaných tabulek Sparku. Projděte si klávesové zkratky odkazující na adresář skladu Sparku:

    • Cesta zástupce k adresáři skladu Azure Synapse Spark: abfss://<container>@<storage_name>.dfs.core.windows.net/synapse/workspaces/<workspace_name>/warehouse
    • Cesta zástupce k adresáři skladu Azure Databricks: dbfs:/mnt/<warehouse_dir>
    • Cesta zástupce k adresáři skladu HDInsight Spark: abfss://<container>@<storage_name>.dfs.core.windows.net/apps/spark/warehouse
  • 2.2) Import poznámkového bloku metadat HMS do pracovního prostoru Fabric Importujte tento poznámkový blok pro import objektů databáze, tabulky a oddílů z zprostředkujícího úložiště. Rozhraní API interního katalogu Sparku se v tomto skriptu používá k vytváření objektů katalogu v prostředcích infrastruktury.

  • 2.3) Nakonfigurujte parametry v prvním příkazu. Když v Apache Sparku vytvoříte spravovanou tabulku, data pro tuto tabulku se ukládají do umístění spravovaného samotným Sparkem, obvykle v adresáři skladu Sparku. Přesné umístění určuje Spark. To kontrastuje s externími tabulkami, kde určíte umístění a spravujete podkladová data. Při migraci metadat spravované tabulky (bez přesunutí skutečných dat) metadata stále obsahují informace o původním umístění odkazující na starý adresář skladu Sparku. Proto se u spravovaných tabulek WarehouseMappings používá k nahrazení pomocí zástupce vytvořeného v kroku 2.1. Všechny zdrojové spravované tabulky se pomocí tohoto skriptu převedou jako externí tabulky. LakehouseId odkazuje na jezero vytvořené v kroku 2.1 obsahující klávesové zkratky.

    
    // 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) Spuštěním všech příkazů poznámkového bloku importujte objekty katalogu z přechodné cesty.

Poznámka:

Při importu více databází můžete (i) vytvořit jeden lakehouse na databázi (použitý přístup) nebo (ii) přesunout všechny tabulky z různých databází do jednoho jezera. U druhé by mohly být <lakehouse>.<db_name>_<table_name>všechny migrované tabulky a budete muset odpovídajícím způsobem upravit poznámkový blok importu.

Krok 3: Ověření obsahu

Krok 3 je místo, kde ověříte, že metadata byla úspěšně migrována. Podívejte se na různé příklady.

Databáze importované spuštěním zobrazíte:

%%sql
SHOW DATABASES

Všechny tabulky v jezeře (databázi) můžete zkontrolovat spuštěním příkazu:

%%sql
SHOW TABLES IN <lakehouse_name>

Podrobnosti o konkrétní tabulce můžete zobrazit spuštěním následujícího příkazu:

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

Případně jsou všechny importované tabulky viditelné v části Tabulky uživatelského rozhraní Průzkumníka Lakehouse pro každý lakehouse.

Screenshot showing HMS metadata imported in the lakehouse.

Další aspekty

  • Škálovatelnost: Řešení, které k importu nebo exportu používá interní rozhraní API katalogu Spark, ale nepřipojí se přímo k HMS, aby získalo objekty katalogu, takže řešení nemohlo správně škálovat, pokud je katalog velký. Logiku exportu byste museli změnit pomocí databáze HMS.
  • Přesnost dat: Neexistuje žádná záruka izolace, což znamená, že pokud výpočetní modul Spark provádí souběžné úpravy metastoru v době, kdy je poznámkový blok migrace spuštěný, mohou být v Fabric Lakehouse zavedena nekonzistentní data.