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


Слияние с низким перемешиванием в Azure Databricks

Заметка

Слияние с низким уровнем перетасовки в общедоступном статусе в Databricks Runtime 10.4 LTS и в публичной предварительной версии в Databricks Runtime 9.1 LTS. Databricks рекомендует пользователям предварительной версии перенестися в Databricks Runtime 10.4 LTS или более поздней версии.

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

Databricks low shuffle merge обеспечивает лучшую производительность путем обработки неизмененных строк в отдельном, более упрощенном режиме обработки, а не обработке их вместе с измененными строками. В результате объем перетасовки данных значительно уменьшается, что приводит к повышению производительности. Слияние с низким уровнем перетасовки также снижает потребность пользователей повторно выполнять команду OPTIMIZE ZORDER BY после выполнения операции MERGE.

Оптимизированная производительность

Многие MERGE рабочие нагрузки обновляют только относительно небольшое количество строк в таблице. Однако таблицы Delta можно обновлять только по файлам. Если команда MERGE должна обновить или удалить небольшое количество строк, хранящихся в определенном файле, она также должна обработать и переписать все оставшиеся строки, хранящиеся в одном файле, даже если эти строки не изменены. Низкий уровень объединения перетасовки оптимизирует обработку неизменённых строк. Ранее они обрабатывались так же, как измененные строки, проходя через несколько этапов перетасовки и дорогостоящих вычислений. При слиянии с низким уровнем перетасовки неизмененные строки обрабатываются без перетасовок, дорогостоящей обработки или других дополнительных затрат.

Оптимизированный макет данных

Помимо ускорения выполнения, низкое перетасовка слиянием также дает преимущества последующих операций. Более ранняя реализация MERGE полностью изменила макет неизмененных данных, что привело к снижению производительности последующих операций. При низком уровне перетасовки слияние пытается сохранить существующий макет данных неизмененных записей, включая оптимизацию Z-порядка наилучшим образом. Таким образом, при низком shuffle-слиянии производительность операций на Delta-таблице ухудшается медленнее после выполнения одной или нескольких команд MERGE.

Заметка

При низкой перетасовке слияние пытается сохранить структуру данных в существующих данных, которые не изменяются. Макет обновленных или недавно вставленных данных может быть неоптимальным, поэтому все равно может потребоваться выполнение команд OPTIMIZE или OPTIMIZE ZORDER BY.

Наличие

По умолчанию в Databricks Runtime 10.4 и более поздних версий включена низкая перетасовка. В более ранних поддерживаемых версиях Databricks Runtime его можно активировать, установив для конфигурации spark.databricks.delta.merge.enableLowShuffle значение true. Этот флаг не действует в Databricks Runtime 10.4 и выше.