Таблицы Delta Live для пакетной инкрементной обработки
Можно ли использовать Delta Live Tables для выполнения инкрементной пакетной обработки?
Теперь я считаю, что этот код всегда будет загружать все данные, доступные в каталоге, при запуске конвейера,
CREATE LIVE TABLE lendingclub_raw
COMMENT "The raw loan risk dataset, ingested from /databricks-datasets."
TBLPROPERTIES ("quality" = "bronze")
AS SELECT * FROM parquet.`/databricks-datasets/samples/lending_club/parquet/`
Но, если мы это сделаем,
CREATE LIVE TABLE lendingclub_raw
COMMENT "The raw loan risk dataset, ingested from /databricks-datasets."
TBLPROPERTIES ("quality" = "bronze")
AS SELECT * cloud_files("/databricks-datasets/samples/lending_club/parquet/", "parquet")
Будет ли он загружать только добавочные данные при каждом запуске, если конвейер запускается в режиме триггера?
Я знаю, что вы можете добиться пакетной инкрементной обработки в автозагрузчике, используя режим триггера.
Поскольку вы не можете точно определить триггер в DLT, как это будет работать?
1 ответ
Вам нужно определить свою таблицу какstreaming live
, поэтому он будет обрабатывать только данные, полученные с момента последнего вызова. Из документов :
Потоковая динамическая таблица или представление обрабатывает данные, которые были добавлены только после последнего обновления конвейера.
Затем его можно было бы комбинировать с запуском по триггеру, который будет вести себя аналогично Trigger.AvailableNow. Из документов :
Триггерные конвейеры обновляют каждую таблицу любыми данными, доступными в данный момент, а затем останавливают кластер, выполняющий конвейер. Delta Live Tables автоматически анализирует зависимости между вашими таблицами и начинает с вычисления тех, которые считываются из внешних источников. Таблицы в конвейере обновляются после обновления зависимых от них источников данных.