Что такое DLT?
Заметка
Для DLT требуется план Premium. Чтобы получить дополнительные сведения, обратитесь к группе учетной записи Databricks.
DLT — это декларативная платформа, предназначенная для упрощения создания надежных и обслуживаемых конвейеров извлечения, преобразования и загрузки (ETL). Вы указываете, какие данные следует принять и как его преобразовать, и DLT автоматизирует ключевые аспекты управления конвейером данных, включая оркестрацию, управление вычислениями, мониторинг, принудительное применение качества данных и обработку ошибок.
DLT основан на Apache Spark, но вместо определения конвейеров данных с помощью ряда отдельных задач Apache Spark вы определяете потоковые таблицы и материализованные представления, которые система должна создавать, а запросы, необходимые для заполнения и обновления этих потоковых таблиц и материализованных представлений.
Дополнительные сведения о преимуществах создания и запуска конвейеров ETL с помощью DLT см. на странице продукта DLT.
преимущества DLT по сравнению с Apache Spark
Apache Spark — это универсальный единый модуль аналитики с открытым кодом, включая ETL. DLT строится на Spark для решения конкретных и распространенных задач обработки ETL. DLT может значительно ускорить ваш переход к производству, если ваши требования включают следующие задачи обработки, например:
- Прием данных из типичных источников.
- Постепенное преобразование данных.
- Выполнение записи измененных данных (CDC).
Однако DLT не подходит для реализации некоторых типов процедурной логики. Например, требования к обработке, такие как запись во внешнюю таблицу или включение условного условия, которое работает с внешним хранилищем файлов или таблицами баз данных, невозможно выполнить внутри кода, определяющего набор данных DLT. Для реализации обработки, не поддерживаемой DLT, Databricks рекомендует использовать Apache Spark или включить поток данных в задание Databricks, которое выполняет обработку в отдельной подзадаче. См. задачу конвейера DLT для заданий.
В следующей таблице сравнивается DLT с Apache Spark:
Способность | DLT | Apache Spark |
---|---|---|
Преобразования данных | Вы можете преобразовать данные с помощью SQL или Python. | Вы можете преобразовать данные с помощью SQL, Python, Scala или R. |
Добавочная обработка данных | Многие преобразования данных автоматически обрабатываются постепенно. | Необходимо определить новые данные, чтобы можно было постепенно обработать их. |
Оркестрация | Преобразования автоматически оркеструются в правильном порядке. | Необходимо убедиться, что различные преобразования выполняются в правильном порядке. |
Параллелизм | Все преобразования выполняются с правильным уровнем параллелизма. | Для параллельного выполнения несвязанных преобразований необходимо использовать потоки или внешний оркестратор. |
Обработка ошибок | Сбои автоматически повторяются. | Необходимо решить, как обрабатывать ошибки и повторные попытки. |
Контроль | Метрики и события регистрируются автоматически. | Необходимо написать код для сбора метрик о выполнении или качестве данных. |
основные понятия DLT
На следующем рисунке показаны важные компоненты конвейера DLT, за которым следует объяснение каждого из них.
таблица потоковой передачи
Потоковая таблица — это таблица Delta с одним или несколькими потоками, записывающими в неё. Потоковые таблицы обычно используются для приема данных, так как они обрабатывают входные данные ровно один раз и могут обрабатывать большие объемы данных только для добавления. Таблицы потоковой передачи также полезны для трансформации потоков данных больших объемов с низкой задержкой.
Материализованное представление
Материализованное представление — это представление, содержащее предварительно вычисляемые записи на основе запроса, определяющего материализованное представление. Записи в материализованном представлении автоматически обновляются при помощи DLT на основе плана обновления или триггеров конвейера обработки данных. Каждый раз при обновлении материализованного представления гарантируется получение тех же результатов, что и при выполнении определяющего запроса на последних доступных данных. Однако это часто делается без повторной компиляции полного результата с нуля, используя добавочное обновление. Материализованные представления обычно используются для преобразований.
Представления
Все представления в Azure Databricks вычисляют результаты из исходных наборов данных по мере их запроса, используя оптимизации кэширования при наличии. DLT не публикует представления в каталоге, поэтому на них можно ссылаться только в конвейере, в котором они определены. Представления полезны как промежуточные запросы, которые не должны предоставляться конечным пользователям или системам. Databricks рекомендует использовать представления для применения ограничений качества данных или преобразования и обогащения наборов данных, которые управляют несколькими подчиненными запросами.
Трубопровод
Конвейер — это совокупность потоковых таблиц и материализованных представлений, которые обновляются вместе. Эти таблицы потоковой передачи и материализованные представления объявляются в исходных файлах Python или SQL. Конвейер также включает конфигурацию, которая определяет вычислительные ресурсы, используемые для обновления потоковых таблиц и материализованных представлений при запуске конвейера. Аналогично тому, как шаблон Terraform определяет инфраструктуру в облачной учетной записи, конвейер DLT определяет наборы данных и преобразования для обработки данных.
Как наборы данных DLT обрабатывают данные?
В следующей таблице описывается, как материализованные представления, потоковые таблицы и представления обрабатывают данные:
Тип набора данных | Как записи обрабатываются с помощью определенных запросов? |
---|---|
Потоковая таблица | Каждая запись обрабатывается ровно один раз. Предполагается, что это источник, в который можно только добавлять. |
Материализованное представление | Записи обрабатываются по мере необходимости, чтобы получить точные результаты для текущего состояния данных. Материализованные представления должны использоваться для задач обработки данных, таких как преобразования, агрегаты или предварительные вычисления медленных запросов и часто используемые вычисления. |
Вид | Записи обрабатываются при каждом запросе представления. Используйте представления для промежуточных преобразований и проверок качества данных, которые не должны публиковаться в общедоступных наборах данных. |
Объявите свои первые наборы данных в DLT
DLT представляет новый синтаксис для Python и SQL. Сведения об основах синтаксиса конвейера см. в статье Разработка кода конвейера с помощью Python и Разработка кода конвейера с помощью SQL.
Заметка
DLT отделяет определения набора данных от обработки обновлений, а записные книжки DLT не предназначены для интерактивного выполнения.
Как настроить конвейеры DLT?
Параметры для конвейеров DLT делятся на две широкие категории:
- Конфигурации, определяющие коллекцию записных книжек или файлов (известных как исходный код), которые используют синтаксис DLT для объявления наборов данных.
- Конфигурации, управляющие инфраструктурой конвейера, управлением зависимостями, обработкой обновлений и сохранением таблиц в рабочей области.
Большинство конфигураций являются необязательными, но некоторые требуют внимательного внимания, особенно при настройке рабочих конвейеров. К ним относятся следующие:
- Чтобы сделать данные доступными за пределами конвейера, необходимо объявить целевую схему для публикации в хранилище метаданных Hive или целевой каталог и целевую схему для публикации в каталоге Unity.
- Разрешения доступа к данным настраиваются через кластер, используемый для выполнения. Убедитесь, что кластер имеет соответствующие разрешения, сконфигурированные для источников данных и целевого расположения хранилища, если указано.
Дополнительные сведения об использовании Python и SQL для написания исходного кода для конвейеров см. в справочнике по языку DLT SQL и справочнике по языку DLT Python .
Дополнительные сведения о параметрах и конфигурациях конвейера см. в разделе Настройка конвейера DLT.
Развертывание первого конвейера и активация обновлений
Перед обработкой данных с помощью DLT необходимо настроить конвейер. После настройки конвейера можно активировать обновление, чтобы вычислить результаты для каждого набора данных в конвейере. Чтобы начать использовать конвейеры DLT, см. раздел Учебник: Запуск первого конвейера DLT.
Что такое обновление конвейера?
Конвейеры развертывают инфраструктуру и пересчитывают состояние данных, когда вы запускаете обновление . Обновление выполняет следующее:
- Запускает кластер с правильной конфигурацией.
- Обнаруживает все таблицы и представления, определенные и проверяет наличие ошибок анализа, таких как недопустимые имена столбцов, отсутствующие зависимости и синтаксические ошибки.
- Создает или обновляет таблицы и представления с самыми последними доступными данными.
Пайплайны могут выполняться непрерывно или по расписанию в зависимости от ваших требований к затратам и задержке. См. запуск обновления в конвейере DLT.
загрузка данных с помощью DLT
DLT поддерживает все источники данных, доступные в Azure Databricks.
Databricks рекомендует использовать потоковые таблицы для большинства сценариев загрузки данных. Для файлов, поступающих в облачное хранилище объектов, Databricks рекомендует автозагрузчик. Вы можете напрямую получать данные с помощью DLT из большинства шин сообщений.
Дополнительные сведения о настройке доступа к облачному хранилищу см. в конфигурации облачного хранилища.
Для форматов, не поддерживаемых автозагрузчиком, можно использовать Python или SQL для запроса любого формата, поддерживаемого Apache Spark. См. раздел Загрузка данных с помощьюDLT.
Мониторинг и применение качества данных
Вы можете использовать ожидания для указания контроля качества данных для содержимого набора данных. В отличие от ограничения CHECK
в традиционной базе данных, которая предотвращает добавление записей, которые не выполняют ограничение, ожидания обеспечивают гибкость при обработке данных, которые не отвечают требованиям к качеству данных. Эта способность позволяет вам обрабатывать и хранить данные, которые могут быть неупорядоченными, и данные, которые должны соответствовать строгим требованиям к качеству. См. , как управлять качеством данных с помощью ожиданий для конвейера данных.
Как связаны DLT и Delta Lake?
DLT расширяет функциональные возможности Delta Lake. Так как таблицы, созданные и управляемые DLT, являются таблицами Delta, они имеют те же гарантии и функции, предоставляемые Delta Lake. См. Что такое Delta Lake?.
DLT добавляет несколько свойств таблицы в дополнение ко многим свойствам таблицы, которые можно задать в Delta Lake. См. справочник свойств DLT и, а также справочник свойств таблицы Delta и.
Создание и управление таблицами с помощью DLT
Azure Databricks автоматически управляет таблицами, созданными с помощью DLT, определяя способ обработки обновлений для правильного вычисления текущего состояния таблицы и выполнения ряда задач обслуживания и оптимизации.
Для большинства операций следует разрешить DLT обрабатывать все обновления, вставки и удаления в целевую таблицу. Дополнительные сведения и ограничения см. в разделе Оставление вручную удалений или обновлений.
задачи обслуживания, выполняемые DLT
DLT выполняет задачи обслуживания в течение 24 часов после обновления таблицы. Обслуживание может повысить производительность запросов и сократить затраты, удалив старые версии таблиц. По умолчанию система выполняет полную операцию OPTIMIZE, за которой следует VACUUM. Вы можете отключить OPTIMIZE, задав pipelines.autoOptimize.managed = false
в свойствах таблицы . Задачи обслуживания выполняются только в том случае, если обновление конвейера выполняется в 24 часа до планирования задач обслуживания.
Delta Live Tables теперь называется DLT
Продукт, ранее известный как Delta Live Tables, теперь называется DLT.
Ограничения
Список ограничений см. в разделе DLT.
Список требований и ограничений, относящихся к использованию DLT с каталогом Unity, см. в разделе Использование каталога Unity с конвейерами DLT
Дополнительные ресурсы
- DLT имеет полную поддержку в REST API Databricks. См. DLT API.
- Сведения о параметрах конвейера и таблицы см. в справочнике по свойствам DLT.
- справочник по языку DLT SQL.
- справочник по языку DLT Python.