Бөлісу құралы:


Среда выполнения 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 с сообщением "Сбой операции: указанный путь не существует". Эта ошибка может привести к потере данных. Наша новая функция, алгоритм File Output Committer, решает эту проблему, позволяя клиентам без труда выполнять параллельную вставку данных.

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

Умное чтение, пропускающее файлы из неудачных заданий

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

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

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

  • Теперь все файлы содержат tid-{jobID} идентификатор в именах файлов.
  • Вместо маркера _success , который обычно создается в выходном расположении после успешного завершения задания, создается новый _committed_{jobID} маркер. Этот маркер связывает ID успешного задания с определенными именами файлов.
  • Мы представили новую команду 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 и их соответствующих версий см. в заметках о выпуске.