Одновременное обновление таблицы дельта-озера через несколько заданий

У меня есть дельта-таблица, в которой несколько заданий с помощью блоков данных могут одновременно объединять / вставлять данные в дельта-таблицу.

Как я могу предотвратить заражение ConcurrentAppendException?

Я не могу использовать это решение, так как входящие изменения могут быть частью любого раздела, и я не могу фильтровать ни один раздел.

Есть ли способ проверить, добавляется ли / объединяется / обновляется / удаляется таблица Delta, и ждать ее завершения, а затем мы получаем блокировки и запускаем слияние для второго задания?

К вашему сведению, это 2 независимых задания Azure Datafactory, пытающихся обновить одну дельта-таблицу.

Ваше здоровье!


person mani_nz    schedule 15.09.2020    source источник


Ответы (1)


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

введите описание изображения здесь

Вот хорошее видео о внутреннем устройстве Delta.

person nefo_x    schedule 27.09.2020