Среда выполнения Fabric 1.2 (GA)
Среда выполнения 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
Совет
Всегда используйте последнюю версию среды выполнения общедоступной версии для рабочей рабочей нагрузки, которая в настоящее время является средой выполнения 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), потоковые upserts и т. д.
Ознакомьтесь с полной версией заметок о выпуске Delta Lake 2.4.
Пакеты уровня по умолчанию для Java, Scala, библиотек Python
Список всех пакетов уровня по умолчанию для Java, Scala, Python и их соответствующих версий см. в заметках о выпуске.