Migrowanie metadanych magazynu metadanych Hive z usługi Azure Synapse Analytics do Fabric

Początkowy krok migracji magazynu metadanych Hive (HMS) obejmuje określenie baz danych, tabel i partycji, które chcesz przenieść. Nie trzeba migrować wszystkiego; Możesz wybrać określone bazy danych. Podczas identyfikowania baz danych na potrzeby migracji upewnij się, czy istnieją zarządzane lub zewnętrzne tabele platformy Spark.

Aby zapoznać się z zagadnieniami dotyczącymi hmS, zapoznaj się z różnicami między usługą Azure Synapse Spark i usługą Fabric.

Uwaga

Alternatywnie, jeśli usługa ADLS Gen2 zawiera tabele delty, możesz utworzyć skrót OneLake do tabeli delty w usłudze ADLS Gen2.

Wymagania wstępne

Opcja 1: Eksport i import HMS do magazynu metadanych w lakehouse

Wykonaj następujące kluczowe kroki migracji:

  • Krok 1. Eksportowanie metadanych ze źródła HMS
  • Krok 2: Importuj metadane do Lakehouse w Fabric
  • Kroki po migracji: Weryfikowanie zawartości

Uwaga

Skrypty kopiują tylko obiekty katalogowe Spark do domku nad jeziorem w Fabric. Zakłada się, że dane są już skopiowane (na przykład z lokalizacji magazynu do ADLS Gen2) lub dostępne dla tabel zarządzanych i zewnętrznych (na przykład za pomocą skrótów — preferowane) do jeziora w Fabric.

Krok 1. Eksportowanie metadanych ze źródła HMS

Głównym celem kroku 1 jest eksport metadanych z źródłowego HMS do sekcji Pliki twojego domku nad jeziorem w Fabric. Ten proces jest następujący:

  • 1.1) Zaimportuj notebook eksportu metadanych HMS do obszaru roboczego usługi Azure Synapse. Ten notebook wykonuje zapytania i eksportuje metadane HMS baz danych, tabel i partycji do katalogu pośredniego w usłudze OneLake (funkcje nie zostały jeszcze uwzględnione). Wewnętrzne API katalogu Spark używa się w tym skrypcie do odczytywania obiektów katalogu.

  • 1.2) Skonfiguruj parametry w pierwszym poleceniu, aby wyeksportować informacje o metadanych do magazynu pośredniego (OneLake). Poniższy fragment kodu służy do konfigurowania parametrów źródłowych i docelowych. Pamiętaj, aby zastąpić je własnymi wartościami.

    
    // 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) Uruchom wszystkie polecenia notesu , aby wyeksportować obiekty wykazu do usługi OneLake. Po zakończeniu tworzenia komórek, ta struktura folderów jest tworzona w pośrednim katalogu wyjściowym.

    Zrzut ekranu przedstawiający eksport HMS w usłudze OneLake.

Krok 2: Importuj metadane do Lakehouse w Fabric

Krok 2 to importowanie rzeczywistych metadanych z pamięci pośredniej do lakehouse w Fabric. W tym kroku mają być migrowane wszystkie metadane HMS (bazy danych, tabele i partycje). Ten proces jest następujący:

  • 2.1) Utwórz skrót w sekcji "Pliki" lakehouse'u. Ten skrót musi wskazywać źródłowy katalog magazynu Spark i jest używany później do zastąpienia tabel zarządzanych przez platformę Spark. Zobacz przykłady skrótów wskazujących do katalogu magazynu Spark.

    • Skrócona ścieżka do katalogu magazynu usługi Azure Synapse Spark: abfss://<container>@<storage_name>.dfs.core.windows.net/synapse/workspaces/<workspace_name>/warehouse
    • Ścieżka skrótu do katalogu magazynowego usługi Azure Databricks: dbfs:/mnt/<warehouse_dir>
    • Ścieżka skrótu do katalogu magazynu HDInsight Spark: abfss://<container>@<storage_name>.dfs.core.windows.net/apps/spark/warehouse
  • 2.2) Zaimportuj notebook importu metadanych HMS do obszaru roboczego Fabric. Zaimportuj ten notatnik, aby zaimportować obiekty bazy danych, tabeli i partycji z magazynu pośredniego. Interfejs API katalogu wewnętrznego platformy Spark jest używany w tym skrypcie do tworzenia obiektów katalogu w Fabric.

  • 2.3) Skonfiguruj parametry w pierwszym poleceniu. Na platformie Apache Spark podczas tworzenia tabeli zarządzanej dane dla tej tabeli są przechowywane w lokalizacji zarządzanej przez platformę Spark, zazwyczaj w katalogu magazynu platformy Spark. Dokładna lokalizacja jest określana przez platformę Spark. Kontrastuje to z tabelami zewnętrznymi, w których określasz lokalizację i zarządzasz bazowymi danymi. Podczas migracji metadanych zarządzanej tabeli (bez przenoszenia rzeczywistych danych) metadane nadal zawierają oryginalne informacje o lokalizacji wskazujące stary katalog magazynu Spark. W związku z tym w przypadku tabel zarządzanych WarehouseMappings służy do zastępowania za pomocą skrótu utworzonego w kroku 2.1. Wszystkie źródłowe tabele zarządzane są konwertowane jako tabele zewnętrzne przy użyciu tego skryptu. LakehouseId odwołuje się do lakehouse'a utworzonego w kroku 2.1, który zawiera skróty.

    
    // 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) Uruchom wszystkie polecenia notesu , aby zaimportować obiekty wykazu ze ścieżki pośredniej.

Uwaga

Podczas importowania wielu baz danych można (i) utworzyć jeden lakehouse na bazę danych (podejście użyte tutaj) lub (ii) przenieść wszystkie tabele z różnych baz danych do pojedynczego lakehouse. W przypadku tych ostatnich wszystkie zmigrowane tabele mogą być <lakehouse>.<db_name>_<table_name>, a należy dostosować notatnik importowy.

Krok 3. Weryfikowanie zawartości

Krok 3 polega na sprawdzeniu, czy metadane zostały pomyślnie zmigrowane. Zobacz różne przykłady.

Zaimportowane bazy danych można zobaczyć, uruchamiając polecenie:

%%sql
SHOW DATABASES

Możesz sprawdzić wszystkie tabele w bazie danych lakehouse, uruchamiając polecenie:

%%sql
SHOW TABLES IN <lakehouse_name>

Szczegóły określonej tabeli można wyświetlić, uruchamiając polecenie:

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

Alternatywnie, wszystkie zaimportowane tabele są widoczne w sekcji Tabele UI eksploratora Lakehouse dla każdego lakehouse.

Zrzut ekranu przedstawiający metadane HMS zaimportowane do Lakehouse.

Inne uwagi

  • Skalowalność: W tym przypadku rozwiązanie korzysta z wewnętrznego interfejsu API katalogu Spark do importowania/eksportowania, ale nie łączy się bezpośrednio z HMS w celu pobrania obiektów katalogu, więc rozwiązanie nie może dobrze się skalować, jeśli katalog jest duży. Należy zmienić logikę eksportu przy użyciu bazy danych HMS.
  • Dokładność danych: Nie ma gwarancji izolacji, co oznacza, że jeśli silnik obliczeniowy Spark równocześnie modyfikuje metastore podczas działania notatnika migracji, niespójne dane mogą być wprowadzane w Lakehouse w Fabric.