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
- Ha még nem rendelkezik ilyenrel, hozzon létre egy Háló-munkaterületet a bérlőjében.
- Ha még nincs ilyenje, hozzon létre egy Fabric lakehouse-t a munkaterületen.
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.
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
- Az Azure Synapse Spark warehouse könyvtárának elérési útja:
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.
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.
Kapcsolódó tartalom
- Háló és Azure Synapse Spark
- További információ a Spark-készletek, konfigurációk, tárak, jegyzetfüzetek és Spark-feladatok definíciójának áttelepítési lehetőségeiről