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


Среда выполнения Fabric 1.2 (EOSA)

Предупреждение

Было объявлено о завершении поддержки среды выполнения Microsoft Fabric 1.2. Среда выполнения Microsoft Fabric 1.2 будет устарела и отключена 31 марта 2026 г. Настоятельно рекомендуем обновить рабочую область и среды Fabric для использования среды выполнения 1.3 (Apache Spark 3.5 и Delta Lake 3.2).

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

К основным компонентам среды выполнения 1.2 относятся:

  • Apache Spark 3.4.1
  • Операционная система: Маринр 2.0
  • Java: 11.
  • Scala: 2.12.17
  • Python: 3.10
  • Delta Lake: 2.4.0
  • R: 4.2.2

Совет

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

Снимок экрана: выбор версии среды выполнения.

Среда выполнения Microsoft Fabric 1.2 поставляется с коллекцией пакетов уровня по умолчанию, включая полную установку Anaconda и часто используемые библиотеки для Java/Scala, Python и R. Эти библиотеки автоматически включаются при использовании записных книжек или заданий на платформе Microsoft Fabric. Ознакомьтесь с документацией по полному списку библиотек. Microsoft Fabric периодически развертывает обновления обслуживания для среды выполнения 1.2, предоставляя исправления ошибок, улучшения производительности и исправления безопасности. Актуальность информации обеспечивает оптимальную производительность и надежность для задач обработки данных.

Новые функции и улучшения Spark версии 3.4.1

Apache Spark 3.4.0 — пятый выпуск в строке 3.x. Этот выпуск, управляемый сообществом с открытым исходным кодом, разрешил более 2600 билетов Jira. Он представляет клиент Python для Spark Connect, улучшает структурированную потоковую передачу с помощью асинхронного отслеживания хода выполнения и обработки состояния Python. Он расширяет охват API Pandas с поддержкой входных данных NumPy, упрощает миграцию из традиционных хранилищ данных с помощью соответствия ANSI и новых встроенных функций. Она также повышает производительность разработки и отладку с помощью профилирования памяти. Кроме того, среда выполнения 1.2 основана на Apache Spark 3.4.1, выпуск обслуживания, ориентированный на исправления стабильности.

Ключевые моменты

Ознакомьтесь с полной версией заметок о выпуске для конкретной версии Apache Spark, посещая spark 3.4.0 и Spark 3.4.1.

Новые оптимизации пользовательских запросов

Поддержка параллельных операций записи в Spark

При выполнении параллельных вставок данных в ту же таблицу с помощью запроса SQL INSERT INTO возникает ошибка 404 с сообщением "Сбой операции: указанный путь не существует". Эта ошибка может привести к потере данных. Наша новая функция, алгоритм фиксации выходных данных файлов, устраняет эту проблему, позволяя клиентам легко выполнять вставку параллельных данных.

Чтобы получить доступ к этой функции, включите spark.sql.enable.concurrentWrites флаг компонента, который включен по умолчанию начиная с среды выполнения 1.2 (Spark 3.4). Хотя эта функция также доступна в других версиях Spark 3, она не включена по умолчанию. Эта функция не поддерживает параллельное выполнение запросов INSERT OVERWRITE, в которых каждое параллельное задание перезаписывает данные в разных секциях одной таблицы динамически. Для этого Spark предлагает альтернативную функцию, которую можно активировать, настроив параметр для динамического spark.sql.sources.partitionOverwriteMode.

Интеллектуальные операции чтения, пропускающие файлы из неудачных заданий

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

Флаг spark.sql.auto.cleanup.enabled управляет нашей новой функцией, устраняя эту проблему. При включении Spark автоматически пропускает чтение файлов, которые не были зафиксированы при выполнении spark.read или выборе запросов из таблицы. Файлы, записанные перед включением этой функции, продолжают читаться как обычно.

Ниже приведены видимые изменения:

  • Теперь все файлы содержат tid-{jobID} идентификатор в именах файлов.
  • Вместо маркера _success , который обычно создается в выходном расположении после успешного завершения задания, создается новый _committed_{jobID} маркер. Этот маркер связывает идентификаторы успешного задания с определенными именами файлов.
  • Мы представили новую команду SQL, которую пользователи могут периодически запускать для управления хранилищем и очистки незафиксированных файлов. Синтаксис для этой команды выглядит следующим образом:
    • Чтобы очистить определенный каталог, выполните указанные действия. CLEANUP ('/path/to/dir') [RETAIN number HOURS];
    • Чтобы очистить определенную таблицу: CLEANUP [db_name.]table_name [RETAIN number HOURS]; в этом синтаксисе представляет URI расположения, path/to/dir где требуется очистка, и number является значением двойного типа, представляющего период хранения. Срок хранения по умолчанию — семь дней.
  • Мы ввели новый параметр spark.sql.deleteUncommittedFilesWhileListingконфигурации, который по умолчанию задан false . Включение этого параметра приводит к автоматическому удалению незафиксированных файлов во время чтения, но этот сценарий может замедлить операции чтения. Рекомендуется вручную запустить команду очистки, если кластер неактивен, а не включить этот флаг.

Руководство по миграции из runtime 1.1 в Runtime 1.2

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

Новые функции и улучшения Delta Lake 2.4

Delta Lake — это проект с открытым исходным кодом, который позволяет создавать архитектуру типа "lakehouse" на основе озер данных. Delta Lake предоставляет транзакции ACID, масштабируемую обработку метаданных и объединяет потоковую и пакетную обработку данных на основе существующих озер данных.

В частности, Delta Lake поддерживает перечисленные ниже функции и возможности.

  • Транзакции ACID в Spark: уровни изоляции, допускающие сериализацию, гарантируют, что читатели никогда не видят несогласованные данные.
  • Обработка масштабируемых метаданных: использует распределенную мощность обработки Spark для обработки всех метаданных для таблиц с масштабируемыми петабайтами с легкостью.
  • Потоковая передача и объединение пакетов : таблица в Delta Lake — это пакетная таблица и источник потоковой передачи и приемник. Прием потоковых данных, выполнение пакетов задним числом и интерактивные запросы работают без дополнительной настройки.
  • Применение схемы: автоматическая обработка вариантов схемы, чтобы предотвратить вставку недопустимых записей во время приема.
  • путешествие во времени: управление версиями данных позволяет выполнять откат, полные исторические следы аудита и повторяемые эксперименты в области машинного обучения.
  • Upserts и deletes: поддерживает операции слияния, обновления и удаления, чтобы обеспечить сложные варианты использования, такие как обнаружение изменений данных, медленно изменяющиеся операции измеряемой величины (SCD), потоковые вставки/обновления и т. д.

Ознакомьтесь с полной версией заметок о выпуске Delta Lake 2.4.

Пакеты уровня по умолчанию для Java, Scala, библиотек Python

Список всех пакетов уровня по умолчанию для Java, Scala, Python и их соответствующих версий см. в заметках о выпуске.