Del via


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

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.

    Skjermbilde som viser HMS-eksport i OneLake.

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
  • 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.

Skjermbilde som viser HMS Metadata importert i 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.