Среда выполнения Apache Spark в Fabric

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

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

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

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

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

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

Ниже приведено комплексное сравнение ключевых компонентов, включая версии Apache Spark, поддерживаемые операционные системы, Java, Scala, Python, Delta Lake и R для среды выполнения 1.1 и среды выполнения 1.2 на платформе Microsoft Fabric.

Среда выполнения 1.1 Среда выполнения 1.2 Среда выполнения 1.3
Apache Spark 3.3.1 3.4.1 3.5.0
Операционная система Ubuntu 18.04 Mariner 2.0 Mariner 2.0
Java 8 11 11
Scala 2.12.15 2.12.17 2.12.17
Python 3,10 3,10 3,10
Delta Lake 2.2.0 2.4.0 3.0.0
R 4.2.2 4.2.2 Н/П

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

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

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

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

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

  1. Они предлагают разницу в производительности для написания рабочих нагрузок, оптимизируя процесс написания.
  2. Они по умолчанию выполняют оптимизацию V-Order файлов Delta Parquet. Оптимизация delta Lake V-Order имеет решающее значение для обеспечения высокой производительности чтения во всех ядрах Fabric. Чтобы получить более глубокое представление о том, как он работает и как управлять им, ознакомьтесь с выделенной статьей по оптимизации таблиц Delta Lake и V-Order.

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

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

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

Чтобы изменить версию среды выполнения на уровне рабочей области, перейдите в рабочую область Параметры Инжиниринг данных > /Science > Spark Compute > Workspace Level Default и выберите нужную среду выполнения из доступных вариантов.

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

Gif, показывающий, как изменить версию среды выполнения.

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

Как правило, мы стремимся перенести все параметры Spark. Однако если мы определим, что параметр Spark не совместим с средой выполнения B, мы создадим предупреждение и воздержаемся от реализации параметра.

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

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

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

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

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

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

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

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

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

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

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

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

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

Снимок экрана: предупреждение при обновлении протокола delta lake.

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

Изменения Delta 2.2 и Delta 2.4

В последней версии среды выполнения Fabric версии 1.2 теперь используется deltaформат таблицы по умолчанию (spark.sql.sources.default). В предыдущих версиях среды выполнения Fabric версии 1.1 и во всей среде выполнения Synapse для Apache Spark, содержащей Spark 3.3 или ниже, формат таблицы по умолчанию был определен как parquet. Ознакомьтесь с таблицей с сведениями о конфигурации Apache Spark, чтобы узнать о различиях между Azure Synapse Analytics и Microsoft Fabric.

Все таблицы, созданные с помощью Spark SQL, PySpark, Scala Spark и Spark R, всякий раз, когда тип таблицы опущен, будет создавать таблицу как delta по умолчанию. Если скрипты явно задают формат таблицы, это будет учитываться. Команда USING DELTA в Spark create table commands становится избыточной.

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

  • ANALYZE TABLE $partitionedTableName PARTITION (p1) COMPUTE STATISTICS
  • ALTER TABLE $partitionedTableName ADD PARTITION (p1=3)
  • ALTER TABLE DROP PARTITION
  • ALTER TABLE RECOVER PARTITIONS
  • ALTER TABLE SET SERDEPROPERTIES
  • LOAD DATA
  • INSERT OVERWRITE DIRECTORY
  • SHOW CREATE TABLE
  • CREATE TABLE LIKE

Управление версиями

Нумерирование версий среды выполнения, тесно связанное с семантической версией, следует немного отличается. Основная версия среды выполнения соответствует основной версии Apache Spark. Поэтому среда выполнения 1 соответствует Spark версии 3. Аналогичным образом, предстоящее время выполнения 2 будет соответствовать Spark 4.0. Важно отметить, что между текущими средами выполнения, runtime 1.1 и Runtime 1.2 могут возникать изменения, включая добавление или удаление различных библиотек. Кроме того, наша платформа предлагает функцию управления библиотеками, которая позволяет пользователям устанавливать все нужные библиотеки.