Время работы Apache Spark в Fabric

Fabric Runtime — это интегрированная с Azure платформа, основанная на Apache Spark, которая позволяет выполнять и управлять опытом в области инженерии данных и науки о данных. Он объединяет ключевые компоненты как из внутренних, так и из источников с открытым кодом, предоставляя клиентам комплексное решение. Для простоты обратитесь к Fabric Runtime на базе Apache Spark как Fabric Runtime.

Основные компоненты среды выполнения Fabric:

  • Apache Spark — мощная распределенная библиотека распределенных вычислений с открытым кодом, которая позволяет выполнять крупномасштабные задачи обработки и анализа данных. Apache Spark предоставляет универсальную и высокопроизводительную платформу для разработки и обработки и анализа данных.

  • Delta Lake — слой хранения с открытым исходным кодом, который предоставляет транзакции ACID и другие функции надежности данных в Apache Spark. Интегрированная в среду выполнения Fabric Delta Lake улучшает возможности обработки данных и обеспечивает согласованность данных в нескольких параллельных операциях.

  • Native Execution Engine — трансформационное улучшение для рабочих нагрузок Apache Spark, обеспечивающее значительный прирост производительности за счёт прямого выполнения запросов Spark на инфраструктуре Lakehouse. Легко интегрируясь, он не требует изменений в коде и исключает зависимость от конкретного поставщика. Он поддерживает форматы Parquet и Delta в API Apache Spark в Runtime 1.3 (Spark 3.5) и Runtime 2.0 (Spark 4.1).

    Поддерживаемые операторы передаются из JVM-ориентированного Spark на векторизированный путь выполнения C++ через Apache Gluten и Velox, обеспечивая колонноориентированную обработку с SIMD-ускорением и поддержкой форматов Parquet и Delta. Если оператор не поддерживается, выполнение автоматически возвращается в JVM-сервер Spark. В репрезентативных тестах (TPC-DS при коэффициенте масштабирования 1000 с помощью Delta) движок достиг производительности, до шести раз выше, чем Spark с открытым исходным кодом, что привело к экономии на вычислительных затратах до 83% в кластере Fabric фиксированного размера.

    Нативный путь сохраняет оптимизации запросов Fabric Spark, включая адаптивное выполнение запросов, переписывание на основе затрат, обрезку столбцов и проталкивание предиката. Вы можете переключать нативное выполнение для каждого приложения, используя конфигурацию spark.native.enabled . Во время выполнения ячейки записной книжки Fabric Spark Advisor предоставляет оповещения в режиме реального времени, когда выполнение возвращается к JVM-ориентированному Spark, помогая диагностировать, когда нативная разгрузка не применяется.

  • Пакеты уровня по умолчанию для Java/Scala, Python и R — пакеты, поддерживающие различные языки программирования и среды. Эти пакеты устанавливаются и настраиваются автоматически, поэтому разработчики могут применять предпочитаемые языки программирования для задач обработки данных.

  • Fabric Runtime построен на надёжной операционной системе с открытым исходным кодом, обеспечивая совместимость с различными аппаратными конфигурациями и системными требованиями.

В следующей таблице приведено полное сравнение ключевых компонентов, включая версии Apache Spark, поддерживаемые операционные системы, Java, Scala, Python, Delta Lake и R, для сред выполнения на базе Apache Spark внутри платформы Fabric.

Совет

Всегда используйте последнюю общедоступную версию среды выполнения (GA) для рабочей рабочей нагрузки, которая в настоящее время является средой выполнения 1.3.

Компонент Среда выполнения 1.3 Среда выполнения 2.0
этап выпуска ГА Общедоступная предварительная версия
Версия Apache Spark 3.5.5 4.1
Операционная система Mariner 2.0 Маринр 3.0
Версия Java 11 двадцать один
Версия Scala 2.12.17 2.13.16
Версия Python 3.11 3.13
Версия Delta Lake 3.2 4.2

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

Оптимизация структуры

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

  • Полная версия Apache Spark с открытым исходным кодом.
  • Коллекция почти 100 встроенных и уникальных улучшений производительности запросов. Эти улучшения включают такие функции, как кэширование секций (включение кэша секций Файловой системы для уменьшения вызовов хранилища метаданных) и перекрестное присоединение к проекции скалярного подзапроса.
  • Встроенный интеллектуальный кэш.

В рамках Fabric Runtime для Apache Spark и Delta Lake возможности нативного автора выполняют две ключевые функции:

  • Они предлагают повышенную производительность для операций записи данных, оптимизируя процесс записи.
  • По умолчанию они используют оптимизацию Delta Parquet по порядку V. Оптимизация V-order Delta Lake крайне важна для обеспечения превосходной производительности чтения во всех движках Fabric. Чтобы глубже понять, как он работает и как им управлять, см. оптимизацию таблицы Delta Lake и V-order.

Поддержка нескольких сред выполнения

Fabric поддерживает несколько времен выполнения, так что вы можете переключаться между ними и снижать риск проблем совместимости или сбоев.

Note

Среда выполнения Spark включает определённую версию Python в состав своего набора компонентов. Например, Runtime 1.3 включает Python 3.11. Эта версия на Python отделена от ядра блокнота Python, которое вы выбираете для чисто Python-ноутбуков. Сведения о жизненном цикле ядра ноутбука Python см. в разделе Среда выполнения и жизненный цикл ядра ноутбука Python в Fabric.

По умолчанию все новые рабочие области используют последнюю GA версию среды выполнения, являющуюся в данный момент Версией 1.3.

Чтобы изменить версию среды выполнения на уровне рабочей области, перейдите к параметрам рабочей области >Data Engineering/Science>параметрах Spark. На вкладке среды выберите нужную версию среды выполнения из доступных параметров. Нажмите кнопку Сохранить, чтобы подтвердить выбор.

Скриншот, показывающий, где выбрать версию для настройки рабочего пространства.

После внесения этого изменения все системно созданные элементы в рабочем пространстве, включая озёрные дома, описания должностей Spark и блокноты, будут использовать новую выбранную версию рабочего пространства, начиная с следующей сессии Spark. Если вы сейчас используете ноутбук с уже существующей сессией для задания или любых действий, связанных с Lakehouse, эта сессия Spark продолжает использоваться без изменений. Однако начиная со следующей сессии или задачи применяется выбранная версия среды выполнения.

Чтобы изменить среду выполнения на уровне элемента Environment, создайте новый элемент «Среда» или откройте существующий. В выпадающем меню Runtime выберите желаемую версию выполнения из доступных опций, выберите Save, а затем Publish внесите изменения. Затем вы можете использовать этот Environment элемент с вашим Notebook или Spark Job Definition.

Снимок экрана, показывающий, где выбрать версию среды выполнения для элемента «Среда».

Последствия изменений среды выполнения в параметрах Spark

Система мигрирует все настройки Spark. Однако, если система определяет, что настройка Spark несовместима с Runtime B, появляется предупреждающее сообщение и не реализует эту настройку.

Изменение среды выполнения параметров Spark.

Последствия изменений среды выполнения при управлении библиотеками

Система управления библиотеками переносит все библиотеки из Runtime A в Runtime B, включая как общедоступные, так и пользовательские среды выполнения. Если версии для Python и R останутся прежними, библиотеки работают корректно. Однако для JAR существует большая вероятность, что они не работают из-за изменений зависимостей и других факторов, таких как изменения в Scala, Java, Spark и операционной системе.

Вы отвечаете за обновление или замену любых библиотек, которые не работают с Runtime B. Если возникает конфликт, то есть Runtime B включает библиотеку, изначально определённую в Runtime A, система управления библиотекой пытается создать необходимую зависимость для Runtime B на основе ваших настроек. Однако процесс сборки прерывается, если возникает конфликт. В журнале ошибок вы можете увидеть, какие библиотеки вызывают конфликты, и внести изменения в их версии или спецификации.

Изменение среды выполнения управления библиотеками.

Обновление протокола Delta Lake

Возможности Delta Lake всегда обладают обратной совместимостью, что гарантирует, что таблицы, созданные в более ранней версии Delta Lake, могут без проблем работать с более поздними версиями. Однако при включении определённых функций (например, с помощью метода delta.upgradeTableProtocol(minReaderVersion, minWriterVersion) ), вы можете нарушить совместимость с более низкими версиями Delta Lake. В таких случаях необходимо изменить рабочие процессы, которые ссылаются на обновлённые таблицы, чтобы привести их в соответствие с версией Delta Lake, обеспечивающей совместимость.

Каждая таблица Delta связана с спецификацией протокола, которая определяет поддерживаемые ею функции. Приложения, взаимодействующие с таблицей, либо для чтения или записи, полагаются на эту спецификацию протокола, чтобы определить, совместимы ли они с набором функций таблицы. Если у приложения нет возможности обрабатывать функцию, указанную как поддерживаемая в протоколе таблицы, оно не может читать или записывать в эту таблицу.

Спецификация протокола разделена на два отдельных компонента: протокол read и протокол write. Для получения дополнительной информации см. Как Delta Lake управляет совместимостью функций?

GIF-файл, показывающий немедленное предупреждение при использовании метода upgradeTableProtocol.

Вы можете выполнить команду delta.upgradeTableProtocol(minReaderVersion, minWriterVersion) в среде PySpark, а также в Spark SQL и Scala. Эта команда запускает обновление таблицы Delta.

При этом обновлении вы получаете предупреждение о том, что обновление версии протокола Delta является необратимым процессом. Этот процесс означает, что после запуска обновления вы уже не можете его отменить.

Обновления версий протокола могут повлиять на совместимость существующих средств чтения и записи таблиц Delta Lake. Поэтому действуйте осторожно и обновляйте версию протокола только при необходимости, например, при внедрении новых функций в Delta Lake.

Это важно

Чтобы узнать больше о том, какие версии и функции протоколов совместимы со всеми опытами Fabric, см. совместимость форматов таблиц Delta Lake.

Скриншот с предупреждением при обновлении протокола Delta Lake.

Кроме того, убедитесь, что все текущие и будущие производственные нагрузки и процессы совместимы с таблицами Delta Lake, использующими новую версию протокола, чтобы обеспечить бесшовный переход и предотвратить возможные сбои.