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


Слияние с малым перемешиванием в 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 отличается более высокой производительностью за счет отдельной обработки неизмененных строк в более простом режиме вместо обработки совокупно с измененными строками. В результате объем перемешанных данных значительно сокращается, что приводит к повышению производительности. Слияние с малым перемешиванием устраняет необходимость повторно выполнять команду OPTIMIZE ZORDER BY после операции MERGE.

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

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

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

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

Примечание.

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

Availability

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