Overføre Metadata for Hive Metastore fra Azure Synapse Analytics til Fabric
Det første trinnet i Hive Metastore (HMS)-overføringen innebærer å bestemme databasene, tabellene og partisjonene du vil overføre. Det er ikke nødvendig å overføre alt. du kan velge bestemte databaser. Når du identifiserer databaser for overføring, må du kontrollere om det finnes administrerte eller eksterne Spark-tabeller.
For HMS-hensyn kan du se forskjeller mellom Azure Synapse Spark og Fabric.
Merk
Hvis ADLS Gen2 inneholder Delta-tabeller, kan du også opprette en OneLake-snarvei til en Delta-tabell i ADLS Gen2.
Forutsetning
- Hvis du ikke allerede har en, oppretter du et Fabric-arbeidsområde i leieren.
- Hvis du ikke har en allerede, kan du opprette et Fabric Lakehouse i arbeidsområdet.
Alternativ 1: Eksporter og importer HMS til lakehouse metastore
Følg disse viktige trinnene for overføring:
- Trinn 1: Eksporter metadata fra kilde HMS
- Trinn 2: Importere metadata til Fabric Lakehouse
- Trinn etter overføring: Valider innhold
Merk
Skript kopierer bare Spark-katalogobjekter til Fabric Lakehouse. Forutsetningen er at dataene allerede er kopiert (for eksempel fra lagerplassering til ADLS Gen2) eller tilgjengelig for administrerte og eksterne tabeller (for eksempel via snarveier – foretrukket) til Fabric Lakehouse.
Trinn 1: Eksporter metadata fra kilde HMS
Fokuset for trinn 1 er å eksportere metadataene fra kilde HMS til Filer-delen av Fabric Lakehouse. Denne prosessen er som følger:
1.1) Importer HMS Metadata Export Notebook til Azure Synapse-arbeidsområdet. Denne notatblokken spør og eksporterer HMS-metadata for databaser, tabeller og partisjoner til en mellomliggende katalog i OneLake (funksjoner som ikke er inkludert ennå). Spark intern katalog-API brukes i dette skriptet til å lese katalogobjekter.
1.2) Konfigurer parameterne i den første kommandoen for å eksportere metadatainformasjon til en mellomliggende lagringsplass (OneLake). Følgende kodesnutt brukes til å konfigurere kilde- og målparameterne. Sørg for å erstatte dem med dine egne verdier.
// 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) Kjør alle notatblokkkommandoer for å eksportere katalogobjekter til OneLake. Når cellene er fullført, opprettes denne mappestrukturen under den mellomliggende utdatakatalogen.
Trinn 2: Importere metadata til Fabric Lakehouse
Trinn 2 er når de faktiske metadataene importeres fra mellomliggende lagringsplass til Fabric Lakehouse. Utdataene for dette trinnet er å overføre alle HMS-metadata (databaser, tabeller og partisjoner). Denne prosessen er som følger:
2.1) Opprett en snarvei i "Filer"-delen av lakehouse. Denne snarveien må peke til kildekatalogen for Spark-lageret og brukes senere til å gjøre erstatningen for Spark-administrerte tabeller. Se hurtigeksempler som peker til Spark-lagerkatalogen:
- Snarveisbane til Azure Synapse Spark-lagerkatalog:
abfss://<container>@<storage_name>.dfs.core.windows.net/synapse/workspaces/<workspace_name>/warehouse
- Snarveisbane til Azure Databricks-lagerkatalog:
dbfs:/mnt/<warehouse_dir>
- Snarveisbane til HDInsight Spark-lagerkatalog:
abfss://<container>@<storage_name>.dfs.core.windows.net/apps/spark/warehouse
- Snarveisbane til Azure Synapse Spark-lagerkatalog:
2.2) Importer HMS metadata import notatblokk til fabric arbeidsområdet. Importer denne notatblokken for å importere database-, tabell- og partisjonsobjekter fra mellomliggende lagringsplass. Spark intern katalog-API brukes i dette skriptet til å opprette katalogobjekter i Fabric.
2.3) Konfigurer parameterne i den første kommandoen. Når du oppretter en administrert tabell i Apache Spark, lagres dataene for tabellen på en plassering som administreres av Spark, vanligvis i Sparks lagerkatalog. Den nøyaktige plasseringen bestemmes av Spark. Dette står i kontrast til eksterne tabeller, der du angir plasseringen og administrerer de underliggende dataene. Når du overfører metadataene til en administrert tabell (uten å flytte de faktiske dataene), inneholder metadataene fortsatt den opprinnelige stedsinformasjonen som peker til den gamle Spark-lagerkatalogen. Derfor, for administrerte tabeller,
WarehouseMappings
brukes til å gjøre erstatningen ved hjelp av snarveien som er opprettet i trinn 2.1. Alle kildeadministrerte tabeller konverteres som eksterne tabeller ved hjelp av dette skriptet.LakehouseId
refererer til lakehouse opprettet i trinn 2.1 som inneholder snarveier.// 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) Kjør alle notatblokkkommandoer for å importere katalogobjekter fra mellomliggende bane.
Merk
Når du importerer flere databaser, kan du (i) opprette ett lakehouse per database (tilnærmingen som brukes her), eller (ii) flytte alle tabeller fra forskjellige databaser til ett enkelt lakehouse. For sistnevnte kan alle overførte tabeller være <lakehouse>.<db_name>_<table_name>
, og du må justere importnotatblokken tilsvarende.
Trinn 3: Validere innhold
Trinn 3 er der du validerer at metadata er overført. Se ulike eksempler.
Du kan se databasene som er importert ved å kjøre:
%%sql
SHOW DATABASES
Du kan kontrollere alle tabeller i et lakehouse (database) ved å kjøre:
%%sql
SHOW TABLES IN <lakehouse_name>
Du kan se detaljene for en bestemt tabell ved å kjøre:
%%sql
DESCRIBE EXTENDED <lakehouse_name>.<table_name>
Alternativt er alle importerte tabeller synlige i inndelingen Lakehouse Explorer UI Tables for hvert lakehouse.
Andre hensyn
- Skalerbarhet: Løsningen her bruker intern Spark-katalog-API til å importere/eksportere, men den kobles ikke direkte til HMS for å hente katalogobjekter, slik at løsningen ikke kan skaleres godt hvis katalogen er stor. Du må endre eksportlogikken ved hjelp av HMS DB.
- Datanøyaktighet: Det finnes ingen isoleringsgaranti, noe som betyr at hvis Spark-databehandlingsmotoren gjør samtidige endringer i metabutikken mens overføringsnotatblokken kjører, kan inkonsekvente data innføres i Fabric Lakehouse.
Relatert innhold
- Fabric vs Azure Synapse Spark
- Mer informasjon om overføringsalternativer for Spark-bassenger, konfigurasjoner, biblioteker, notatblokker og Spark-jobbdefinisjon