Поделиться через


Перенос метаданных хранилища метаданных Hive из Azure Synapse Analytics в Fabric

Начальный шаг миграции хранилища метаданных Hive (HMS) включает определение баз данных, таблиц и секций, которые требуется перенести. Не обязательно переносить все. можно выбрать определенные базы данных. При идентификации баз данных для миграции убедитесь, что существуют ли управляемые или внешние таблицы Spark.

Рекомендации по HMS см. в различиях между Azure Synapse Spark и Fabric.

Примечание.

Кроме того, если ADLS 2-го поколения содержит таблицы Delta, можно создать ярлык OneLake для таблицы Delta в ADLS 2-го поколения.

Необходимые компоненты

Вариант 1. Экспорт и импорт HMS в хранилище метаданных Lakehouse

Выполните следующие ключевые действия для миграции:

  • Шаг 1. Экспорт метаданных из исходного HMS
  • Шаг 2. Импорт метаданных в Fabric lakehouse
  • Этапы после миграции. Проверка содержимого

Примечание.

Скрипты копируют только объекты каталога Spark в Fabric lakehouse. Предположим, что данные уже копируются (например, из расположения хранилища в ADLS 2-го поколения) или доступны для управляемых и внешних таблиц (например, с помощью сочетаний клавиш, предпочитаемых) в Lakehouse Fabric.

Шаг 1. Экспорт метаданных из исходного HMS

Основное внимание на шаге 1 уделяется экспорту метаданных из исходного HMS в раздел "Файлы" в lakehouse Fabric. Этот процесс выглядит следующим образом:

  • 1.1) Импорт записной книжки экспорта метаданных HMS в рабочую область Azure Synapse. Эта записная книжка запрашивает и экспортирует метаданные HMS баз данных, таблиц и секций в промежуточный каталог в OneLake (функции, которые еще не включены). API внутреннего каталога Spark используется в этом скрипте для чтения объектов каталога.

  • 1.2) Настройте параметры в первой команде для экспорта метаданных в промежуточное хранилище (OneLake). Следующий фрагмент кода используется для настройки параметров источника и назначения. Обязательно замените их собственными значениями.

    
    // 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) Выполните все команды записной книжки для экспорта объектов каталога в OneLake. После завершения ячеек создается эта структура папок в промежуточном выходном каталоге.

    Снимок экрана: экспорт HMS в OneLake.

Шаг 2. Импорт метаданных в Fabric lakehouse

Шаг 2 заключается в том, что фактические метаданные импортируются из промежуточного хранилища в Fabric lakehouse. Выходные данные этого шага — переносить все метаданные HMS (базы данных, таблицы и секции). Этот процесс выглядит следующим образом:

  • 2.1) Создайте ярлык в разделе "Файлы" озера. Этот ярлык должен указывать на исходный каталог хранилища Spark и позже используется для замены управляемых таблиц Spark. См. примеры сочетаний клавиш, указывающие на каталог хранилища Spark:

    • Путь к каталогу хранилища Azure Synapse Spark: abfss://<container>@<storage_name>.dfs.core.windows.net/synapse/workspaces/<workspace_name>/warehouse
    • Путь к каталогу хранилища Azure Databricks: dbfs:/mnt/<warehouse_dir>
    • Путь к каталогу хранилища HDInsight Spark: abfss://<container>@<storage_name>.dfs.core.windows.net/apps/spark/warehouse
  • 2.2) Импорт метаданных HMS в рабочую область Fabric. Импортируйте эту записную книжку , чтобы импортировать объекты базы данных, таблицы и секционирования из промежуточного хранилища. API внутреннего каталога Spark используется в этом скрипте для создания объектов каталога в Fabric.

  • 2.3) Настройка параметров в первой команде. В Apache Spark при создании управляемой таблицы данные для этой таблицы хранятся в расположении, управляемом самой Spark, как правило, в каталоге хранилища Spark. Точное расположение определяется Spark. Это контрастирует с внешними таблицами, где вы указываете расположение и управляете базовыми данными. При переносе метаданных управляемой таблицы (без перемещения фактических данных) метаданные по-прежнему содержат исходные сведения о расположении, указывающие на старый каталог хранилища Spark. Поэтому для управляемых таблиц используется для замены WarehouseMappings с помощью ярлыка, созданного на шаге 2.1. Все управляемые исходные таблицы преобразуются в внешние таблицы с помощью этого скрипта. LakehouseId относится к lakehouse, созданному на шаге 2.1 с ярлыками.

    
    // 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) Выполните все команды записной книжки для импорта объектов каталога из промежуточного пути.

Примечание.

При импорте нескольких баз данных можно создать одно lakehouse для каждой базы данных (подход, используемый здесь), или (ii) переместить все таблицы из разных баз данных в одно озеро. Для последнего все перенесенные таблицы могут быть <lakehouse>.<db_name>_<table_name>, и вам потребуется соответствующим образом настроить записную книжку импорта.

Шаг 3. Проверка содержимого

Шаг 3 — это проверка успешности переноса метаданных. См. различные примеры.

Базы данных, импортированные, можно просмотреть, выполнив следующие действия:

%%sql
SHOW DATABASES

Чтобы проверить все таблицы в lakehouse (базе данных), выполните следующие действия:

%%sql
SHOW TABLES IN <lakehouse_name>

Подробные сведения о конкретной таблице можно просмотреть, выполнив следующую команду:

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

Кроме того, все импортированные таблицы отображаются в разделе "Таблицы пользовательского интерфейса обозревателя Lakehouse" для каждого озера.

Снимок экрана: метаданные HMS, импортированные в lakehouse.

Другие вопросы

  • Масштабируемость: решение использует внутренний API каталога Spark для импорта и экспорта, но оно не подключается непосредственно к HMS для получения объектов каталога, поэтому решение не может масштабироваться, если каталог велик. Необходимо изменить логику экспорта с помощью базы данных HMS.
  • Точность данных: нет гарантии изоляции, что означает, что если подсистема вычислений Spark выполняет одновременные изменения в хранилище метаданных во время выполнения записной книжки миграции, несогласованные данные могут быть представлены в Fabric lakehouse.