Этап 2. Миграция рабочей нагрузки Spark

Эта статья — этап 2 из 4 в серии рекомендаций по лучшим практикам миграции от Azure Synapse Spark к Microsoft Fabric.

Используйте эту статью для переноса рабочих нагрузок Spark из Azure Synapse в Microsoft Fabric. В этой статье рассматриваются Помощник по миграции, рефакторинг шаблонов кода, которые не могут быть автоматически преобразованы, а также перенос конфигураций пула Spark, сред и библиотек.

В этой статье вы узнаете, как:

  • Поймите процесс миграции для стандартных (не-Git) и Synapse рабочих областей с поддержкой Git.
  • Используйте Помощник по миграции Spark для переноса записных книжек, определений заданий Spark и пулов.
  • Рефакторинг шаблонов кода Synapse для обеспечения совместимости Fabric.
  • Перенос параметров пула Spark, сред и библиотек.
  • Определение и устранение пробелов совместимости библиотек между Synapse и Fabric.

Миграция с помощью ассистента миграции

Помощник миграции Spark автоматизирует перенос записных книжек, определений заданий Spark, пулов и метаданных озёрной базы данных из Synapse в Fabric. Помощник копирует и преобразует элементы, но не завершает миграцию. Вам по-прежнему необходимо рефакторинг кода, согласовать пробелы конфигурации и проверить результаты.

Пошаговые инструкции по запуску помощника см. в разделе Spark Synapse для Fabric Spark Помощник по миграции (предварительная версия).

Помощник переносит следующие элементы:

  • Пулы Spark переносятся в Fabric-пулы и соответствующие артефакты среды.
  • Записные книжки и связанные с ними среды переносятся.
  • Определения заданий Spark переносятся с связанными средами.
  • Базы данных Lake сопоставляются с Fabric схемами; управляемые таблицы Delta переносятся с помощью ярлыков каталога OneLake.

Это важно

Конфигурации Spark, пользовательские библиотеки и пользовательские параметры исполнителя не переносятся помощником. Эти параметры необходимо настроить вручную в средах Fabric. Рабочие области Synapse в виртуальной сети нельзя перенести с помощью помощника.

Миграция стандартной рабочей области (не Git)

Для рабочих областей, где записные книжки и SJD хранятся непосредственно в Synapse (не в репозитории Git):

  1. Запустите Ассистент миграции Spark из рабочей области Fabric (Migrate>элементы инженерии данных). Выберите исходную рабочую область Synapse и перенесите все элементы Spark.

  2. Проверьте зависимости: убедитесь, что используется та же версия Spark. Если записные книжки ссылаются на другие записные книжки, mssparkutils.notebook.run()убедитесь, что они также перенесены. Мастер миграции сохраняет структуру папок, при этом Fabric поддерживает до 10 уровней вложенности.

  3. Рефакторинг кода: замените mssparkutils на notebookutils, замените ссылки на связанные службы на Fabric Connections и обновите пути к файлам. Дополнительные сведения см. в разделе кода Refactor Spark .

Миграция рабочей области с поддержкой Git

Для рабочих областей, в которых записные книжки и SJD хранятся в Azure DevOps и GitHub репозиториях, обратите внимание, что Synapse и Fabric используют различные форматы сериализации в Git. Synapse хранит записные книжки в формате JSON; Fabric использует исходный формат .py/.scala или .ipynb. Вы не можете напрямую указать рабочую область Fabric на ту же ветку Synapse Git.

  1. Перенос элементов. Используйте Помощник по миграции Spark для переноса записных книжек и SJD из рабочей области Synapse в рабочую область Fabric. При этом элементы преобразуются в формат, совместимый с Fabric.

  2. Код рефакторинга. Примените тот же рефакторинг кода, что и стандартный сценарий — замена mssparkutils, обновление путей к файлам, замена связанных служб. Дополнительные сведения см. в разделе кода Refactor Spark .

  3. Подключите рабочую область Fabric к Git. Подключите рабочую область Fabric к новой ветви или папке в репозитории (Workspace Settings>Source Control>Git Integration). Используйте отдельную ветвь или папку из содержимого Synapse, чтобы избежать конфликтов. Зафиксируйте изменения в содержимом рабочей области Fabric, чтобы заполнить новую ветку.

  4. Настройка конвейеров развертывания (необязательно). Настройте конвейеры развертывания Fabric (Dev → Test → Prod) для поддержания процесса CI/CD. Fabric поддерживает автоматическую привязку для озерных домов по умолчанию и подключенных сред при развертывании на разных этапах.

Подсказка

Сохраните ветвь Synapse Git для исторической справки. Создайте новую ветку или папку для содержимого Fabric. Fabric хранит записные книжки в качестве исходных файлов (.py для PySpark), а не JSON, что обеспечивает более чистые диффы Git для проверки кода.

Рефакторинг кода Spark

После переноса определений заданий Spark и записных книжек необходимо исправить шаблоны кода, которые Помощник по миграции не могут автоматически преобразовать. В этом разделе описано, как заменить API-интерфейсы Synapse, обновить пути к файлам и изменить шаблоны учетных данных для работы с Fabric.

Предварительный аудит рефакторинга

Прежде чем обращаться к отдельным шаблонам рефакторинга, выполните поиск по всей базе кода во всех записных книжках, чтобы определить конкретный код Synapse, который нуждается в изменениях.

Шаблон поиска Категория Требуемое действие
spark.synapse.linkedService Связанные службы Удалить; заменить на прямую аутентификацию конечной точки или использовать секреты в Key Vault.
getSecretWithLS Credentials Замена на getSecret(vaultUrl, secretName)
TokenLibrary Токен или проверка подлинности Удалите; используйте direct OAuth config или notebookutils
synapsesql Соединитель SQL Замена spark.read.synapsesql() с помощью операций чтения разностного формата
mssparkutils Spark Utils Замена на notebookutils (большинство API идентичны)
spark.catalog.listDatabases API каталога Замена на spark.sql("SHOW DATABASES")
spark.catalog.currentDatabase API каталога Замена на spark.sql("SELECT CURRENT_DATABASE()")
spark.catalog.getDatabase API каталога Замена на spark.sql("DESCRIBE DATABASE ...")
spark.catalog.listFunctions API каталога Не поддерживается в Fabric — удаление
spark.catalog.registerFunction API каталога Не поддерживается — используйте spark.udf.register() вместо него
spark.catalog.functionExists API каталога Не поддерживается в Fabric — удаление
LinkedServiceBasedTokenProvider Поставщик аутентификации Замена на ClientCredsTokenProvider
getPropertiesAsMap Связанные службы Удалите; настройте учетную запись хранения напрямую
spark.storage.synapse Связанные службы Удаление — не поддерживается в системе Fabric
/user/trusted-service-user/ Пути к файлам Заменить путь OneLake или путь ярлыка
cosmos.oltp Cosmos DB Обновление для применения "Key Vault" для хранения секретов вместо использования связанной службы
kusto.spark.synapse Kusto/ADX Замените аутентификацию связанной службы с помощью accessToken через getToken()

Подсказка

Выполните эти поиски по всему репозиторию записных книжек перед миграцией. Записные книжки, для которых не найдено совпадений, можно безопасно переносить без изменений. Следует отдать приоритет ноутбукам с совпадениями для рефакторинга кода, используя подробные рекомендации в следующих разделах.

Использование пути к файлу

Обновите ноутбуки Synapse, использующие относительные пути или пути хранилища, управляемые Synapse, чтобы использовать прямые пути abfss:// или пути OneLake в Fabric.

До (Synapse) После (Fabric)
"abfss://...@<synapse_storage>.dfs.core.windows.net/user/trusted-service-user/deltalake" "abfss://<workspace_id>@onelake.dfs.fabric.microsoft.com/<lakehouse_id>/Tables/deltalake"
spark.read.synapsesql("<pool>.<schema>.<table>") spark.read.format("delta").load("abfss://.../<lakehouse>/Tables/<table>")

Подсказка

Замените все пути хранилища, управляемые Synapse, на пути OneLake (abfss://<workspace_id>@onelake.dfs.fabric.microsoft.com/<item_id>/...). Для данных ADLS 2-го поколения создайте ярлыки OneLake и ссылайтесь на пути ярлыков.

API каталога Spark

Fabric не поддерживает несколько методов spark.catalog. Замените их эквивалентами Spark SQL.

До (Synapse) После (Fabric)
spark.catalog.listDatabases() spark.sql("SHOW DATABASES").show()
spark.catalog.currentDatabase() spark.sql("SELECT CURRENT_DATABASE()").first()["current_database()"]
spark.catalog.getDatabase(db_name) spark.sql(f"DESCRIBE DATABASE {db_name}").show()
spark.catalog.listFunctions() Не поддерживается в Fabric — удаление или пропуск
spark.catalog.registerFunction(name, fn) Не поддерживается в Fabric — вместо этого используйте spark.udf.register()
spark.catalog.functionExists(name) Не поддерживается в Fabric — удаление или пропуск

Note

методы таблицы spark.catalog, такие как createTable(), tableExists() и listTables() работают нормально в Fabric. Для рефакторинга требуются только методы каталога на уровне базы данных и функций.

MSSparkUtils и NotebookUtils

Замените вызовы mssparkutils эквивалентами Fabric notebookutils. Наиболее распространенными изменениями, связанными с учетными данными, являются следующие:

До (Synapse) После (Fabric)
mssparkutils.credentials.getSecretWithLS("sampleLS", secretKey) notebookutils.credentials.getSecret("https://<vault>.vault.azure.net/", secretKey)
TokenLibrary.getSecret("foo", "bar") notebookutils.credentials.getSecret("https://foo.vault.azure.net/", "bar")

В Fabric не поддерживается извлечение секретов на основе связанных служб (getSecretWithLS). Вместо этого указать URL-адрес Key Vault непосредственно с помощью notebookutils.credentials.getSecret(vaultUrl, secretName). Тот же шаблон применяется к вызовам TokenLibrary.getSecret() .

Note

Большинство методов mssparkutils.fs (например, ls, cp, mv, rm, mkdirs, head) работают аналогично notebookutils.fs в Fabric. Основными изменениями являются методы работы с учетными данными и секретные методы, а также ссылки на пути notebook.run().

соединитель Azure Data Explorer (Kusto)

Записные книжки Synapse, которые подключаются к Azure Data Explorer (Kusto) через связанные службы, необходимо переделать для использования прямой аутентификации через конечную точку.

До (Synapse) После (Fabric)
.option("spark.synapse.linkedService", "AzureDataExplorer1") Удаление ссылки на связанную службу
Чтение с набором параметров связанной службы .option("accessToken", notebookutils.credentials.getToken("https://<cluster>.kusto.windows.net"))

Замените параметр связанной службы параметром accessToken . Используйте notebookutils.credentials.getToken() для получения токена для конечной точки кластера Kusto. Остальные параметры запроса (kustoDatabase, kustoQuery) остаются неизменными.

Соединитель Cosmos DB

Обновите подключения Cosmos DB в Synapse, которые используют связанные службы или getSecretWithLS.

До (Synapse) После (Fabric)
.option("spark.synapse.linkedService", "CosmosDbLS") Удаление ссылки на связанную службу
mssparkutils.credentials.getSecretWithLS("cosmosKeyLS", "cosmosKey") notebookutils.credentials.getSecret("https://<vault>.vault.azure.net/", "cosmosKey")

Замените ссылку на связанную службу с помощью прямой конфигурации конечной точки Cosmos DB. Сохраните ключ учетной записи Cosmos DB в Azure Key Vault и получите его с помощью notebookutils.credentials.getSecret(vaultUrl, secretName) вместо getSecretWithLS().

Ссылки на связанную службу

Замените все ссылки на связанную службу Synapse в Fabric.

До (Synapse) После (Fabric)
spark.conf.set("spark.storage.synapse.linkedServiceName", ls_name) Удаление — не поддерживается в системе Fabric
spark.conf.set("fs.azure.account.oauth.provider.type", "com.microsoft.azure.synapse.tokenlibrary.LinkedServiceBasedTokenProvider") spark.conf.set("fs.azure.account.oauth.provider.type", "org.apache.hadoop.fs.azurebfs.oauth2.ClientCredsTokenProvider")
TokenLibrary.getPropertiesAsMap(linked_service_cfg) Удалите — используйте прямую строку подключения или конфигурацию идентификатора службы

В Fabric нет связанных служб. Замените поставщика маркеров Synapse стандартными учетными данными клиента OAuth (принципал службы). Настройте fs.azure.account.auth.type, oauth.provider.type, client.id, client.secret и client.endpoint непосредственно с помощью spark.conf.set().

Библиотека токенов

в Fabric недоступны возможности TokenLibrary Synapse для получения токенов и чтения свойств связанной службы. Замените его эквивалентными шаблонами.

До (Synapse) После (Fabric)
TokenLibrary.getPropertiesAsMap(serviceConnection) Удалить — настроить учетную запись хранения напрямую
val my_account = conexion("Endpoint").toString.substring(8) val my_account = "<storage_account_name>" // Hardcode or retrieve via notebookutils
mssparkutils.fs.head(internalPath, Int.MaxValue) notebookutils.fs.head(internalPath, Int.MaxValue)

Для доступа к ADLS Gen2 на основе OAuth настройте учетные данные служебного субъекта непосредственно с помощью spark.conf.set(), используя ключи, связанные с учетной записью хранения (например, fs.azure.account.auth.type.<account>.dfs.core.windows.net, вместо того, чтобы полагаться на поставщиков связанных маркеров службы).

Это важно

Перед переходом просмотрите все блокноты на предмет ссылок на все связанные службы. Любые оставшиеся вызовы spark.synapse.linkedService, TokenLibrary или getSecretWithLS приводят к сбою во время выполнения в Fabric.

Миграция определения задания Spark

Определения заданий Spark (SJD) — это конфигурации пакетного задания, ссылающиеся на основной исполняемый файл (.pyили.jar.R), необязательные ссылочные библиотеки, аргументы командной строки и контекст lakehouse. Хотя Ассистент миграции Spark автоматически обрабатывает миграцию SJD, важные различия между Synapse и Fabric SJD требуют внимания.

Основные различия между Synapse и Fabric SJD

  • Требуется контекст для Lakehouse. В Fabric каждый SJD должен иметь по крайней мере один лейкхаус, связанный с ним. Этот lakehouse служит файловой системой по умолчанию для среды выполнения Spark. Любой код, использующий относительные пути, считывает и записывает данные в lakehouse по умолчанию. В Synapse SJDs используют хранилище рабочей области по умолчанию (ADLS 2-го поколения) в качестве файловой системы по умолчанию.

  • Поддерживаемые языки. Fabric поддерживает PySpark (Python), Spark (Scala/Java) и SparkR. .NET для Spark (C#/F#) не поддерживается в Fabric. Перед миграцией необходимо переписать эти рабочие нагрузки в Python или Scala.

  • Политики повторных попыток. Fabric SJDs поддерживают встроенные политики повторных попыток, такие как максимальное количество повторных попыток и интервал повторных попыток. Эта функция полезна для заданий структурированной потоковой передачи Spark, которые должны выполняться неограниченное время.

  • Привязка среды. В Synapse SJD соединяются с пулом Spark. В Fabric SJD привязываются к среде, которая включает конфигурацию пула, библиотеки и свойства Spark. Помощник по миграции автоматически сопоставляет ссылки пула Synapse с Fabric средами.

  • Планирование. Fabric SJD имеют встроенное планирование (Settings>Schedule) без необходимости отдельного конвейера. В Synapse планирование SJD требует конвейера с действием задания Spark. Если у вас есть конвейеры Synapse, которые активируют только SJD, рассмотрите возможность использования встроенного средства планирования SJD в Fabric вместо переноса конвейера.

  • Импорт и экспорт. Synapse поддерживает импорт и экспорт JSON на основе пользовательского интерфейса для SJD. Fabric не поддерживает импорт или экспорт пользовательского интерфейса. Используйте Помощник по миграции Spark или REST API Fabric для создания или обновления SJD программным способом.

Рефакторинг кода SJD

Те же шаблоны рефакторинга кода в этой статье применяются к основным файлам SJD. Изменения делятся на две категории.

Изменения исходного кода (внутри основного файла .py, .jar или .R)

  • Замените mssparkutils на notebookutils для операций с учетными данными и файловой системой.
  • При необходимости обновите жестко закодированные пути файлов в коде до путей OneLake abfss:// или ярлыковых путей. Идентификаторы SJD, использующие только относительные пути к lakehouse по умолчанию, могут не требовать изменений.
  • Замените ссылки на связанные службы в коде с помощью секретов из Key Vault или подключений Fabric.

Note

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

изменения конфигурации SJD (в параметрах элемента Fabric SJD):

  • Убедитесь, что пути ADLS 2-го поколения, на которые ссылаются файлы основных определений, по-прежнему доступны из рабочей области Fabric. Если файлы хранятся в хранилище рабочей области Synapse, повторно отправьте их в Fabric SJD или переместите их в доступное расположение ADLS 2-го поколения.
  • Убедитесь, что все справочные файлы (.py, .R, .jar) доступны после миграции. Повторно отправьте все файлы, сохраненные в хранилище рабочей области Synapse.
  • Если аргументы командной строки содержат пути Synapse или строки подключения, обновите их на эквиваленты в Fabric.

Перенос пулов, сред и библиотек

После миграции записных книжек и определений заданий Spark необходимо выбрать стратегию настройки пула и окружения. В этом разделе объясняется, когда можно использовать начальные пулы Fabric (вместо миграции), когда следует создавать пользовательские среды, и как выявлять пробелы совместимости библиотек и устранять их.

Миграция пула Spark

начальные пулы Fabric

Начальные пулы Fabric обеспечивают запуск сеанса Spark за секунды — это значительное улучшение по сравнению с пулами Synapse Spark, которым для запуска кластеров требуются холодные старты длительностью в несколько минут. Начальные пулы готовы к использованию с платформы и не требуют настройки.

Подсказка

Если пул Synapse Spark не имеет пользовательских конфигураций, пользовательских библиотек и не требует определенных требований к размеру узла за пределами среднего уровня, не переносите пул. Вместо этого позвольте записным книжкам и определениям заданий Spark использовать параметры начального пула Fabric рабочей области по умолчанию. Этот подход обеспечивает максимально быстрое время запуска и нулевые затраты на управление пулом. Создавайте настраиваемый пул или среду только в случае конкретной необходимости.

Когда следует создавать настраиваемый пул или среду

Создайте настраиваемый пул и (или) среду Fabric только в том случае, если это требуется для вашей рабочей нагрузки.

  • Определенный размер узла (Small, Large, XLarge, XXLarge) отличается от значения по умолчанию Средний.
  • Пользовательские библиотеки (пакеты pip, пакеты conda, JARs, wheels), которые не включены в встроенное окружение выполнения Fabric.
  • Настраиваемые свойства Spark (например, spark.sql.shuffle.partitions, spark.executor.memory), превосходящие значения по умолчанию.
  • Управляемые частные конечные точки для доступа к частным источникам данных (требуется настраиваемые пулы).
  • Определенная версия среды выполнения Spark отличается от версии рабочей области по умолчанию.

Миграция конфигурации и библиотек

Переносите конфигурации и библиотеки Spark в среды Fabric.

Подробные инструкции по переносу библиотек в среды Fabric см. в разделе Migrate Spark Libraries из Azure Synapse в Fabric.

  1. Экспорт конфигураций Spark. В Synapse Studio перейдите к Manage>Spark Pools>, выберите пул >Конфигурации + библиотеки>, загрузите как .yml/.conf/.json.

  2. Импорт в окружение. В Fabric создайте артефакт среды. Перейдите к Spark Compute>Spark Properties>, загрузите экспортируемый Sparkproperties.yml файл.

  3. Перенос библиотек. Для библиотек уровня пула загрузите пакеты (whl-файлы, JAR-файлы, tar-файлы) в раздел Библиотеки среды. Для пакетов PyPI/Conda добавьте их в конфигурацию общедоступной библиотеки среды.

Это важно

Параметры библиотеки уровня рабочей области в Fabric устарели. Перенос всех библиотек в артефакты среды. Миграция окончательно удаляет существующие конфигурации на уровне рабочей области— скачайте все параметры перед включением сред.

Совместимость библиотек: Synapse и Fabric

Fabric Runtime 1.3 (Spark 3.5) поставляется с 223 встроенными библиотеками Python, 183 Java/Scala и 135 R. Большинство библиотек Synapse доступны в Fabric, но существуют пробелы, которые могут привести к сбоям среды выполнения, если не устранена перед миграцией.

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

  • записные книжки Python: Поиск import и инструкций from ... import для всех .py / .ipynb файлов.
  • Java/Scala notebooks и SJDs: Поиск инструкций import и координат Maven; найдите пакеты, такие как com.azure.cosmos.spark или com.microsoft.kusto.spark.
  • Экспорт полного списка зависимостей: выполните команду pip freeze в блокноте Synapse и сравните её с манифестом среды выполнения Fabric версии 1.3. Требуются действия только в отношении библиотек, которые присутствуют и в ваших выходных данных pip freeze, и в таблицах пробелов ниже.
  • Пользовательские библиотеки уровня пула и уровня рабочей области: В Synapse Studio перейдите в раздел Manage>Пулы Apache Spark>, выберите пул, затем >Packages, чтобы просмотреть пользовательские библиотеки, которые необходимо загрузить заново в среду Fabric.

Библиотеки Python, которых нет в Fabric

Категория Библиотеки Действие
CUDA / GPU (9 libs) libcublas, libcufft, libcufile, libcurand, libcusolver, libcusparse, libnpp, libnvfatbin, libnvjitlink, libnvjpeg Недоступно. Fabric не поддерживает пулы GPU. Рефакторинг рабочих нагрузок GPU для использования альтернатив на основе ЦП или хранения в Synapse.
Клиенты HTTP/ API httpx, httpcore, h11, google-auth, jmespath Установка с помощью среды: pip install httpx google-auth jmespath
Машинное обучение и интерпретация интерпретировать, интерпретировать ядро Установка с помощью среды: pip install interpret
Сериализация данных marshmallow, jsonpickle, frozendict, fixedint Установите через окружение при необходимости: pip install marshmallow jsonpickle
Ведение журнала и телеметрия fluent-logger, humanfriendly, library-metadata-cooker, impulse-python-handler fluent-logger: устанавливайте, если используете. Другие — внутренние для Synapse, скорее всего, не нужны.
Внутренние компоненты Jupyter jupyter-client, jupyter-core, jupyter-ui-poll, jupyterlab-мини-приложения, ipython-pygments-lexers Fabric управляет инфраструктурой Jupyter внутри системы. Эти библиотеки обычно не нужны в пользовательском коде.
Системные и C библиотеки libgcc, libstdcxxx, libgrpc, libabseil, libexpat, libnsl, libzlib Низкоуровневые системные библиотеки. Обычно не импортируется напрямую. Установите только в том случае, если у вас есть расширения C, которые зависят от них.
Файл / Конкуренция filelock, fsspec, knack Установите через среду pip install filelock fsspec, если она используется.

библиотеки Java/Scala отсутствуют из Fabric

Library Версия Synapse Действие
azure-cosmos-analytics-spark 2.2.5 Установите его в качестве пользовательского JAR-файла в среде Fabric, если ваши задания Spark используют соединитель аналитики Cosmos DB.
junit-jupiter-params 5.5.2 Библиотека только для тестирования. Не требуется в рабочих записных книжках.
junit-platform-commons 1.5.2 Библиотека только для тестирования. Не требуется в рабочих записных книжках.

Библиотеки R

Только одно различие: Synapse включает пакет R версии 4.6.0, который отсутствует в Fabric. Установите через среду, если требуется. Fabric добавляет FabricTelemetry (версия 1.0.2), предназначенную для внутреннего использования Fabric.

Важные различия версий

68 Python библиотеки существуют на обеих платформах, но с разными версиями. Большинство из них являются незначительными различиями версий, но 17 имеют значительные изменения версий, которые могут повлиять на поведение.

Library Версия Fabric Версия Synapse Влияние
libxgboost 2.0.3 3.0.1 Изменения API XGBoost между версиями 2 и 3. Код обучения и прогнозирования модели тестирования.
фляга 2.2.5 3.0.3 Flask 3.x имеет критические изменения. Если вы обслуживаете API Flask из Jupyter-ноутбуков, тестируйте их тщательно.
lxml 4.9.3 5.3.0 Незначительные изменения API. Тестирование рабочих процессов синтаксического анализа XML.
libprotobuf 3.20.3 4.25.3 Protobuf 4.x имеет критические изменения для пользовательских определений прототипов.
markupsafe 2.1.3 3.0.2 MarkupSafe 3.x прекращает поддержку для Python 3.7, но API остаётся совместимым.
libpq 12.17 17.4 Клиентская библиотека PostgreSQL. Переход к основной версии — проверка подключений к базе данных.
libgcc-ng / libstdcxx-ng 11.2.0 15.2.0 Среда выполнения GCC. Может повлиять на совместимость расширений C.

Note

Synapse обычно поставляет более новые версии библиотек уровня системы (GCC, protobuf, libpq), в то время как Fabric поставляет более новые версии библиотек данных и машинного обучения (более Python пакетов в целом). Если вам нужна определенная версия, закрепите ее в конфигурации среды Fabric.

Подсказка

Выполните быструю проверку совместимости: экспортируйте список библиотек пула Synapse (pip freeze), сравните с манифестом среды выполнения 1.3 Fabric и предварительно установите отсутствующие библиотеки в среде Fabric перед запуском перенесенных записных книжек. Сравнение встроенной библиотеки и версии между Fabric и средой выполнения Synapse Spark см. в microsoft/synapse-spark-runtime GitHub.