Megosztás a következőn keresztül:


Hive metaadattár metaadatainak migrálása az Azure Synapse-ból a Fabricbe

A Hive Metastore (HMS) áttelepítésének első lépése az átvinni kívánt adatbázisok, táblák és partíciók meghatározása. Nem szükséges mindent migrálni; kiválaszthat bizonyos adatbázisokat. A migrálási adatbázisok azonosításakor győződjön meg arról, hogy vannak-e felügyelt vagy külső Spark-táblák.

HMS-szempontok esetén tekintse meg az Azure Synapse Spark és a Fabric közötti különbségeket.

Feljegyzés

Ha az ADLS Gen2 deltatáblákat tartalmaz, létrehozhat egy OneLake-parancsikont egy Delta-táblához az ADLS Gen2-ben.

Előfeltételek

1. lehetőség: HMS exportálása és importálása a Lakehouse metaadattárba

Kövesse az alábbi főbb lépéseket a migráláshoz:

  • 1. lépés: Metaadatok exportálása a forrás HMS-ből
  • 2. lépés: Metaadatok importálása a Fabric lakehouse-ba
  • Áttelepítés utáni lépések: Tartalom ellenőrzése

Feljegyzés

A szkriptek csak Spark-katalógusobjektumokat másolnak a Fabric lakehouse-ba. Feltételezi, hogy az adatok már át vannak másolva (például a raktár helyről az ADLS Gen2-be), vagy elérhetők felügyelt és külső táblákhoz (például billentyűparancsokkal – előnyben részesített) a Fabric lakehouse-ba.

1. lépés: Metaadatok exportálása a forrás HMS-ből

Az 1. lépés középpontjában a metaadatoknak a forrás HMS-ből a Fabric lakehouse Fájlok szakaszába való exportálása áll. Ez a folyamat a következő:

  • 1.1) HMS-metaadatok exportálási jegyzetfüzetének importálása az Azure Synapse-munkaterületre. Ez a jegyzetfüzet lekérdezi és exportálja az adatbázisok, táblák és partíciók HMS-metaadatait a OneLake egy köztes könyvtárába (a függvények még nem szerepelnek). A Spark belső katalógus API-ja ebben a szkriptben katalógusobjektumok olvasására szolgál.

  • 1.2) Konfigurálja az első parancs paramétereit , hogy metaadat-adatokat exportáljon egy köztes tárolóba (OneLake). A forrás- és célparaméterek konfigurálásához az alábbi kódrészlet szolgál. Győződjön meg arról, hogy a saját értékeire cseréli őket.

    
    // 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) A katalógusobjektumok OneLake-be való exportálásához futtassa az összes jegyzetfüzet-parancsot . A cellák befejezése után létrejön ez a mappastruktúra a köztes kimeneti könyvtár alatt.

    Képernyőkép a HMS-exportálásról a OneLake-ben.

2. lépés: Metaadatok importálása a Fabric lakehouse-ba

A 2. lépés az, amikor a tényleges metaadatok importálva lesznek a köztes tárolóból a Fabric lakehouse-ba. Ennek a lépésnek a kimenete az, hogy az összes HMS-metaadat (adatbázisok, táblák és partíciók) át lesznek migrálva. Ez a folyamat a következő:

  • 2.1) Hozzon létre egy parancsikont a tóház "Fájlok" szakaszában . Ennek a parancsikonnak a forrás Spark-raktárkönyvtárra kell mutatnia, és később kell használnia a Spark által felügyelt táblák pótlásához. Lásd a Spark Warehouse könyvtárra mutató billentyűparancsokat:

    • Az Azure Synapse Spark warehouse könyvtárának elérési útja: abfss://<container>@<storage_name>.dfs.core.windows.net/synapse/workspaces/<workspace_name>/warehouse
    • Az Azure Databricks raktárkönyvtárának elérési útja: dbfs:/mnt/<warehouse_dir>
    • A HDInsight Spark-raktárkönyvtár billentyűparancsa: abfss://<container>@<storage_name>.dfs.core.windows.net/apps/spark/warehouse
  • 2.2) Importálja a HMS-metaadatok importáló jegyzetfüzetét a Fabric-munkaterületre. Importálja ezt a jegyzetfüzetet adatbázis-, tábla- és partícióobjektumok köztes tárolóból való importálásához. A Spark belső katalógus API-ja ebben a szkriptben katalógusobjektumokat hoz létre a Fabricben.

  • 2.3) Konfigurálja a paramétereket az első parancsban. Az Apache Sparkban, amikor létrehoz egy felügyelt táblát, a rendszer a tábla adatait egy, a Spark által felügyelt helyen tárolja, általában a Spark raktárkönyvtárában. A pontos helyet a Spark határozza meg. Ez ellentétben áll a külső táblákkal, ahol megadhatja a helyet, és kezelheti az alapul szolgáló adatokat. Ha egy felügyelt tábla metaadatait migrálja (a tényleges adatok áthelyezése nélkül), a metaadatok továbbra is tartalmazzák az eredeti helyadatokat, amely a régi Spark-raktárkönyvtárra mutat. Ezért a felügyelt táblák WarehouseMappings esetében a 2.1. lépésben létrehozott parancsikon használatával történik a csere. Ezzel a szkripttel minden forrás által felügyelt tábla külső táblaként lesz konvertálva. LakehouseId a 2.1. lépésben létrehozott, billentyűparancsokat tartalmazó tóházra hivatkozik.

    
    // 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) Futtassa az összes jegyzetfüzet-parancsot a katalógusobjektumok köztes elérési útból való importálásához.

Feljegyzés

Több adatbázis importálásakor (i) adatbázisonként egy tóházat hozhat létre (az itt használt megközelítés), vagy (ii) áthelyezheti az összes táblát a különböző adatbázisokból egyetlen tóházba. Az utóbbi esetében az összes migrált tábla lehet <lakehouse>.<db_name>_<table_name>, és ennek megfelelően kell módosítania az importálási jegyzetfüzetet.

3. lépés: Tartalom ellenőrzése

A 3. lépésben ellenőrizheti, hogy a metaadatok migrálása sikeresen megtörtént-e. Tekintse meg a különböző példákat.

Az importált adatbázisokat a következő futtatásával tekintheti meg:

%%sql
SHOW DATABASES

A lakehouse-ban (adatbázisban) lévő összes táblát a következő futtatásával ellenőrizheti:

%%sql
SHOW TABLES IN <lakehouse_name>

Egy adott tábla részleteit a következő futtatásával tekintheti meg:

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

Másik lehetőségként az összes importált tábla látható az egyes lakehouse-beli Lakehouse Explorer felhasználói felületi táblák szakaszában.

Képernyőkép a lakehouse-ban importált HMS-metaadatokról.

Egyéb szempontok

  • Méretezhetőség: A megoldás belső Spark-katalógus API-t használ az importáláshoz/exportáláshoz, de nem csatlakozik közvetlenül a HMS-hez katalógusobjektumok lekéréséhez, így a megoldás nem tudott megfelelően méretezni, ha a katalógus nagy. A HMS DB használatával módosítania kell az exportálási logikát.
  • Adat pontossága: Nincs elkülönítési garancia, ami azt jelenti, hogy ha a Spark számítási motor egyidejű módosításokat végez a metaadattáron a migrálási jegyzetfüzet futtatása közben, inkonzisztens adatok hozhatók létre a Fabric lakehouse-ban.