Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Медленные запросы и высокие вычислительные затраты обычно связаны с несколькими коренными причинами: чтением большего количества данных, чем требуется запросу, перемещением данных между узлами, выбором плохого плана запросов или переписыванием файлов, которые не изменились. Azure Databricks автоматически устраняет многие из этих причин для рабочих нагрузок — от крупномасштабной обработки ETL до временных интерактивных запросов. Другие оптимизации применяются только при их включении или настройке под конкретную нагрузку.
Эта страница начинается с рекомендаций для большинства рабочих нагрузок, затем группирует оптимизации по тому, выполняются ли они автоматически или требуют настройки, и описывает задачу, которую решает каждая из них. Большинство оптимизаций Databricks Runtime требуют Delta Lake — формата по умолчанию для таблиц в Azure Databricks.
Начните с этих рекомендаций
Эти решения обеспечивают наибольший прирост производительности для большинства рабочих нагрузок. Они также помогают многим автоматическим оптимизациям на этой странице работать на полную мощность.
-
Используйте Liquid Clustering для компоновки таблиц.Liquid Clustering заменяет разбиение таблиц и
ZORDER. Он организует данные по столбцам, по которым вы часто фильтруете, что улучшает data skipping и динамическое исключение файлов. - Используйте управляемые таблицы Unity Catalog.Прогнозная оптимизация автоматически поддерживает управляемые таблицы. См. управляемые таблицы Unity Catalog для Delta Lake и Apache Iceberg.
- Используйте вычисления с поддержкой Photon. Предиктивный ввод/вывод требует Photon, как и динамическая обрезка файлов в операторах
MERGE,UPDATEиDELETE. См. статью " Что такое Фотон?". - Включите функцию «векторы удаления». Predictive I/O использует векторы удаления, чтобы избежать переписывания целых файлов во время обновлений, удаления и слияний, а параллельность на уровне строк требует их. Для таблиц Delta Lake необходимо явно включить векторы удаления. См. векторы удаления в Databricks.
- Используйте последнюю версию Databricks Runtime. Новые версии включают новейшие улучшения производительности. Для некоторых оптимизаций требуется минимальная версия Databricks Runtime или вычисления с поддержкой Photon. См. требования на соответствующей странице.
Автоматическая оптимизация
Эти оптимизации включены по умолчанию. Включать их не обязательно, но некоторые приносят больше пользы, когда ваши таблицы и вычислительные ресурсы соответствуют определённым условиям, например, при использовании Photon и поддержании актуальной статистики таблиц.
- Дисковое кэширование: ускоряет запросы, которые многократно читают одни и те же удалённые файлы данных Parquet и Delta Lake. Azure Databricks кэширует копии файлов на локальном хранилище вычислительных узлов, чтобы последующие чтения выполнялись локально. Azure Databricks автоматически включает её на типах рабочих экземпляров, которые поддерживают её.
-
Динамическое отсечение файлов: пропускает файлы, которые не могут содержать строки, соответствующие условию соединения, в объединениях таблиц Delta Lake.
MERGE,UPDATEиDELETEинструкции требуют вычислений с поддержкой Photon для динамической обрезки файлов. -
Слияние с низкой перетасовкой: ускоряет
MERGEоперации, которые обновляют или удаляют несколько строк в каждом файле. Слияние с низким shuffle обрабатывает неизменённые строки без перемешивания и сохраняет их существующее расположение данных. - Адаптивное выполнение query: переоптимизирует планы запросов во время их выполнения на основе фактического размера данных. Это исправляет медленные стратегии JOIN, слишком много мелких задач и несбалансированные задачи, возникающие из-за неточных оценок.
- Предиктивный ввод-вывод: ускоряет сканирование данных и уменьшает количество данных, переписываемых при обновлениях, удалении и слиянии в вычислительной среде с поддержкой Photon.
- Оптимизатор на основе затрат: использует статистику таблиц и столбцов для выбора эффективных планов запросов, особенно для запросов с несколькими операциями JOIN. Оптимизатор на основе стоимости зависит от статистики, поэтому собирайте ее и держите в актуальном состоянии.
-
Предиктивная оптимизация: автоматически запускает
OPTIMIZE,VACUUMиANALYZEдля таблиц под управлением Unity Catalog, так что не нужно планировать обслуживание таблиц. Он также поддерживает актуальную статистику, которую использует стоимостной оптимизатор. Чтобы проверить, включена ли она для вашего аккаунта, см. «Проверка, включена ли предиктивная оптимизация».
Оптимизации, которые вы настраиваете
Для этих оптимизаций нужно включить их, настраивать или менять конфигурацию таблиц. Используйте их, когда рабочая нагрузка требует поведения, которое стандартные настройки не покрывают.
- Поддержка архивирования: используйте, когда политики жизненного цикла в облаке перемещают старые файлы таблиц на архивные уровни хранилища, чтобы снизить затраты на хранение. Поддержка архивации предписывает Azure Databricks игнорировать файлы старше определённого периода, чтобы политика жизненного цикла не нарушала запросы, которые читают только свежие данные. Эта функция предоставляется в режиме общедоступной предварительной версии.
- Диапазонное соединение: используйте, когда соединения используют точку в интервале или условие перекрытия интервалов. Databricks SQL автоматически оптимизирует соединения по диапазону. В других вычислительных средах настройте соединения по диапазону с помощью подсказок join или конфигурации сессии.
- Уровни изоляции и конфликты записи: Используйте, когда одновременные операции записи в одну и ту же таблицу конфликтуют, или когда нагрузка требует более строгих гарантий, чем стандартный уровень изоляции WriteSerializable. Сериализируемая изоляция снижает пропускную способность для одновременных записей. Параллелизм на уровне строк автоматически разрешает многие конфликты между одновременными записями в таблицах, для которых выполняются условия его применения.
-
Индексы полнотекстового поиска: Используйте, когда запросы ищут в текстовых столбцах подстроки или слова с помощью функций
searchилиisearch. Индекс пропускает файлы, которые не могут содержать совпадающие записи. Эта функция доступна в бета-версии.
Примечание.
Индексы фильтра Bloom — устаревшая функция пропуска данных. Они добавляют накладные расходы на запись, и их сложно настроить. Если в ваших таблицах они есть, см. индексы фильтра Bloom (устаревшие), чтобы заменить и удалить их.
Другие функции производительности
- Функции высшего порядка обеспечивают встроенную оптимизированную производительность для многих операций, для которых в Spark нет стандартных операторов. Функции высшего порядка работают лучше, чем пользовательские функции.
- Azure Databricks имеет встроенные операторы и специальный синтаксис для работы со сложными типами данных, включая массивы, структуры и JSON-строки.
- Spark SQL выполняет запросы к JSON-строкам , не анализируя их заранее.
- Чтобы контролировать размер файлов данных, которые создаются при операциях записи, см. раздел Размер файла данных.
- Для рекомендаций по проектированию и обслуживанию таблиц см. Лучшие практики: Delta Lake.
Диагностируйте медленные или дорогие рабочие нагрузки
Если нагрузка медленнее или дороже, чем ожидалось, и вы не знаете почему, используйте Spark UI, чтобы найти узкое место до смены конфигурации. См. раздел «Диагностика затрат и производительности с помощью интерфейса Spark».