Что такое Delta Lake в Azure Databricks?

Delta Lake — это оптимизированный уровень хранения, который предоставляет основу для таблиц в Lakehouse на платформе Databricks. Delta Lake — это программное обеспечение с открытым исходным кодом, которое расширяет возможности файлов данных Parquet с помощью журнала транзакций на основе файлов для ACID-транзакций и масштабируемой обработки метаданных. Delta Lake полностью совместим с API Apache Spark и разработан для тесной интеграции со структурированной потоковой передачей, что позволяет легко использовать одну копию данных для операций пакетной и потоковой передачи и обеспечения добавочной обработки в масштабе.

Delta Lake — это формат по умолчанию для всех операций в Azure Databricks. Если иное не указано, все таблицы в Azure Databricks являются таблицами Delta Lake. Databricks первоначально разработал протокол Delta Lake и продолжает активно участвовать в проекте открытый код. Многие из оптимизаций и продуктов платформы Databricks опираются на гарантии, предоставляемые Apache Spark и Delta Lake. Для получения сведений об оптимизациях в Azure Databricks см. рекомендации по оптимизации в Azure Databricks.

Справочные сведения о командах Delta Lake SQL см. в разделе Инструкции Delta lake.

Журнал изменений в Delta Lake содержит четко определенный открытый протокол, который может использоваться любой системой для чтения журнала. См. раздел Протокол журнала транзакций Delta.

Начало работы с Delta Lake

Все таблицы в Azure Databricks — это таблицы Delta Lake по умолчанию. Независимо от того, используете ли вы DataFrames Apache Spark или SQL, вы получаете все преимущества Delta Lake просто за счет сохранения данных в хранилище данных с параметрами по умолчанию.

Примеры базовых операций Delta Lake, таких как создание таблиц, чтение, запись и обновление данных, см. в руководстве по созданию таблиц Delta Lake и управлению ими.

Рекомендации Databricks и рекомендации по использованию Delta Lake см. в разделе Рекомендации: Delta Lake.

Преобразование и загрузка данных в Delta Lake

Azure Databricks предлагает множество функций, которые ускоряют и упрощают загрузку данных в архитектуру Lakehouse.

Метод Описание
Руководство. Создание конвейера ETL с помощью конвейеров Lakeflow Создайте сквозной конвейер ETL с помощью конвейеров Lakeflow.
Настройка инкрементальной загрузки из Azure Data Lake Storage Настройте инкрементальную загрузку из облачного хранилища с помощью Auto Loader и конвейеров Lakeflow.
Потоковые таблицы Используйте потоковые таблицы для приема данных в режиме только добавления и низколатентной потоковой обработки в конвейерах Lakeflow.
Начало работы с COPY INTO для загрузки данных Инкрементально и идемпотентно загружайте данные из облачного хранилища с использованием SQL.
Что такое автозагрузчик? Загружайте файлы из облачного хранилища инкрементально по мере их поступления.
Создание или изменение таблицы путем загрузки файлов Отправьте файлы и создайте таблицы из пользовательского интерфейса Azure Databricks.
Добавочное клонирование таблиц Parquet и Apache Iceberg в Delta Lake Выполняйте инкрементное клонирование таблиц Parquet или Apache Iceberg в Delta Lake.
Преобразовать в Delta Lake Однократное преобразование таблиц Parquet или Apache Iceberg в Delta Lake.
Партнеры по технологиям Подключите сторонних партнеров и инструменты к Azure Databricks lakehouse.

Полный список вариантов подключения см. раздел «Выбрать стандартный разъём».

Обновление и изменение таблиц Delta Lake

Атомарные транзакции с Delta Lake позволяют использовать множество вариантов обновления данных и метаданных. Чтобы избежать повреждения таблиц, Databricks рекомендует избегать взаимодействия непосредственно с файлами данных и журналов транзакций в каталогах файлов Delta Lake.

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

Инкрементные и потоковые рабочие нагрузки в Delta Lake

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

Функция Описание
Потоковое чтение и запись таблиц Delta Lake Используйте таблицы Delta Lake как источники и приемники для Structured Streaming с readStream и writeStream.
Использование канала изменений данных в Azure Databricks Отслеживайте изменения на уровне строк между версиями таблицы Delta Lake или Apache Iceberg версии 3.

Запрос предыдущих версий таблицы

Каждая запись в таблицу Delta Lake создает новую версию таблицы. Журнал транзакций можно использовать для просмотра изменений в таблице и запроса предыдущих версий таблицы. См. статью "Работа с журналом таблиц".

Усовершенствования схемы Delta Lake

Delta Lake проверяет схему при записи, гарантируя, что все данные, записанные в таблицу, соответствуют заданным требованиям.

Функция Описание
Обеспечение соблюдения схемы Проверьте качество данных, применяя схему при записи.
Ограничения в Azure Databricks Примените принудительно применяемые ограничения целостности, а также информационные ограничения первичного ключа, внешнего ключа и уникальности.
Сгенерированные столбцы Delta Lake Автоматически генерируйте значения столбцов с помощью пользовательских функций.
Обогащение таблиц пользовательскими метаданными Добавляйте комментарии и настраиваемые метаданные к таблицам и столбцам, чтобы упростить поиск данных.

Управление файлами и индексированием данных с помощью Delta Lake

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

Функция Описание
Использование жидкостной кластеризации для таблиц Упростите структуру данных и оптимизируйте производительность запросов без разбиения на разделы с помощью жидкой кластеризации.
Пропуск данных Пропускать неуместные файлы во время запроса с помощью статистики столбцов, порядка Z и оптимизированного макета данных.
Оптимизация макета файла данных Сжатие небольших файлов данных для повышения производительности запросов.
Удалите неиспользуемые файлы данных с помощью VACUUM Удалите устаревшие файлы данных, чтобы сократить затраты на хранение.
Автоматическое удаление строк с автоматическим временем жизни Автоматически удалять строки из управляемых таблиц после настраиваемого периода времени.
Управление размером файла данных Управляйте размером целевого файла вручную или включите автоматическую настройку размера файла.

Настройка и проверка параметров Delta Lake

Azure Databricks хранит все данные и метаданные для таблиц Delta Lake в облачном хранилище объектов. Многие конфигурации можно задать на уровне таблицы или в сеансе Spark. Вы можете просмотреть сведения о таблице Delta Lake, чтобы узнать, какие параметры настроены.

Функция Описание
Просмотрите сведения о таблице с помощью команды describe detail Просмотр конфигураций таблиц и метаданных с помощью DESCRIBE DETAIL команды.
Справочник по свойствам таблицы Список ссылок на свойства таблицы, доступные для таблиц Delta Lake.

Конвейеры данных с использованием Delta Lake и конвейеров Lakeflow

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

Совместимость функций Delta Lake

Не все функции Delta Lake находятся во всех версиях Databricks Runtime. Сведения о версионировании Delta Lake см. в разделе "Совместимость функций Delta Lake и протоколы".

Документация по API Delta Lake

Для большинства операций чтения и записи в таблицах Delta Lake можно использовать API Sql Spark или Apache Spark DataFrame .

Инструкции по SQL, относящиеся к Delta Lake, см. в выражениях Delta Lake.

Azure Databricks обеспечивает совместимость на уровне двоичного кода с интерфейсами API Delta Lake в Databricks Runtime. Сведения о том, как просмотреть версию API Delta Lake, упакованную в каждой версии Databricks Runtime, см. в разделе «Системная среда» в соответствующей статье в заметках о выпуске Databricks Runtime. Документация по API Delta Lake для Python, Scala и Java см. в документации по OSS Delta Lake.