Объекты данных в Databricks lakehouse

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

Какие объекты данных находятся в Databricks lakehouse?

Архитектура Databricks lakehouse объединяет данные, хранящиеся с протоколом Delta Lake в облачном хранилище объектов, с метаданными, зарегистрированными в хранилище метаданных. В озерах Databricks есть пять основных объектов:

  • Каталог: группирование баз данных.
  • База данных, или схема: группирование объектов в каталоге. Базы данных содержат таблицы, представления и функции.
  • Таблица: коллекция строк и столбцов, хранящихся в виде файлов данных в хранилище объектов.
  • Представление: сохраненный запрос, как правило, к одной или нескольким таблицам или источникам данных.
  • Функция: сохраненная логика, возвращающая скалярное значение или набор строк.

Схема модели объектов Unity Catalog

Сведения о защите объектов с помощью каталога Unity см. в статье о защищаемой объектной модели.

Что такое хранилище метаданных?

Хранилище метаданных содержит все метаданные, определяющие объекты данных в lakehouse. Azure Databricks предоставляет следующие варианты хранилища метаданных.

  • Хранилище метаданных каталога Unity: каталог Unity обеспечивает централизованный контроль доступа, аудит, происхождение и возможности обнаружения данных. Вы создаете хранилища метаданных каталога Unity на уровне учетной записи Azure Databricks, а одно хранилище метаданных можно использовать в нескольких рабочих областях.

    Каждое хранилище метаданных каталога Unity настраивается с корневым хранилищем в контейнере Azure Data Lake Storage 2-го поколения в учетной записи Azure. Это расположение хранилища используется по умолчанию для хранения данных для управляемых таблиц.

    В каталоге Unity данные по умолчанию защищены. Изначально пользователи не имеют доступа к данным в хранилище метаданных. Доступ может предоставляться администратором хранилища метаданных или владельцем объекта. Защищаемые объекты в каталоге Unity иерархичны, а привилегии наследуются сверху вниз. Каталог Unity предлагает одно место для администрирования политик доступа к данным. Пользователи могут получить доступ к данным в каталоге Unity из любой рабочей области, к которую подключено хранилище метаданных. Дополнительные сведения см. в разделе "Управление привилегиями" в каталоге Unity.

  • Встроенное хранилище метаданных Hive (устаревшая версия) — каждая рабочая область Azure Databricks включает встроенное хранилище метаданных Hive в качестве управляемой службы. Экземпляр хранилища метаданных развертывается в каждом кластере и безопасно обращается к метаданным из центрального репозитория для каждой рабочей области клиента.

    Хранилище метаданных Hive предоставляет менее централизованную модель управления данными, чем каталог Unity. По умолчанию кластер позволяет всем пользователям получать доступ ко всем данным, управляемым встроенным хранилищем метаданных Hive рабочей области, если для этого кластера не включен контроль доступа к таблицам. Дополнительные сведения см. в разделе "Управление доступом к таблицам хранилища метаданных Hive" (устаревшая версия).

    Элементы управления доступом к таблицам не хранятся на уровне учетной записи, поэтому их необходимо настроить отдельно для каждой рабочей области. Чтобы воспользоваться преимуществами централизованной и упрощенной модели управления данными, предоставляемой каталогом Unity, Databricks рекомендует обновить таблицы, управляемые хранилищем метаданных Hive рабочей области, до хранилища метаданных каталога Unity.

  • Внешнее хранилище метаданных Hive (устаревшая версия) — вы также можете перенести собственное хранилище метаданных в Azure Databricks. Кластеры Azure Databricks могут подключаться к существующим внешним хранилищам метаданных Apache Hive. Управление доступом к таблицам можно использовать для управления разрешениями во внешнем хранилище метаданных. Элементы управления доступом к таблицам не хранятся во внешнем хранилище метаданных, поэтому их необходимо настроить отдельно для каждой рабочей области. Databricks рекомендует вместо этого использовать каталог Unity, благодаря его простоте и модели управления на основе учетных записей.

Независимо от используемого хранилища метаданных Azure Databricks хранит все данные таблицы в хранилище объектов в облачной учетной записи.

Что такое каталог?

Каталог — это самая высокая абстракция (или грубое зерно) в реляционной модели Databricks Lakehouse. Каждая база данных будет связана с каталогом. Каталоги существуют как объекты в хранилище метаданных.

До появления каталога Unity в Azure Databricks использовалось двухуровневое пространство имен. Каталоги — это третий уровень в модели пространства имен каталога Unity:

catalog_name.database_name.table_name

Встроенное хранилище метаданных Hive поддерживает только один каталог hive_metastore.

Что такое база данных?

База данных — это коллекция объектов данных, таких как таблицы или представления (также называемые "отношениями"), и функций. В Azure Databricks термины "схема" и "база данных" являются взаимозаменяемыми (в то время как во многих реляционных системах база данных — это коллекция схем).

Базы данных всегда будут связаны с расположением в облачном хранилище объектов. В случае необходимости при регистрации базы данных можно указать LOCATION. При этом нужно помнить следующее.

  • Связанное с базой данных расположение LOCATION всегда считается управляемым.
  • При создании базы данных файлы в целевом расположении не создаются.
  • LOCATION базы данных определяет расположение по умолчанию для данных всех таблиц, зарегистрированных в этой базе данных.
  • Успешное удаление базы данных рекурсивно приводит к удалению всех данных и файлов, хранящихся в управляемом расположении.

Это взаимодействие между расположениями, управляемыми базами данных, и файлами данных, является очень важным. Чтобы избежать случайного удаления данных:

  • не используйте расположения базы данных в нескольких определениях базы данных совместно с другими пользователями;
  • не регистрируйте базу данных в расположении, которое уже содержит данные.
  • Чтобы управлять жизненным циклом данных независимо от базы данных, сохраните данные в расположении, не вложенном в расположения базы данных.

Что такое таблица?

Таблица Azure Databricks — это набор структурированных данных. Разностная таблица хранит данные в виде каталога файлов в облачном хранилище объектов и регистрирует метаданные таблицы в хранилище метаданных в каталоге и схеме. Так как Delta Lake — это формат по умолчанию для таблиц, созданных в Azure Databricks, все таблицы, созданные в Databricks, являются таблицами Delta по умолчанию. Поскольку разностные таблицы хранят данные в облачном хранилище объектов и предоставляют ссылки на данные через хранилище метаданных, пользователи в организации могут обращаться к данным с помощью предпочитаемых API; в Databricks это в том числе SQL, Python, PySpark, Scala и R.

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

В Databricks существует два типа таблиц: управляемые и неуправляемые (или внешние) таблицы.

Примечание.

Различие разностных динамических таблиц между динамическими таблицами и таблицами потоковой передачи с точки зрения таблицы не применяется.

Что такое управляемая таблица?

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

Существует несколько способов создания управляемых таблиц, в том числе следующие.

CREATE TABLE table_name AS SELECT * FROM another_table
CREATE TABLE table_name (field_name1 INT, field_name2 STRING)
df.write.saveAsTable("table_name")

Что такое неуправляемая таблица?

Для неуправляемых (внешних) таблиц Azure Databricks управляет только метаданными; удаление таблицы базовые данные не затрагивает. При создании неуправляемой таблицы всегда указывается LOCATION; можно либо зарегистрировать существующий каталог файлов данных в качестве таблицы, либо указать путь при первом определении таблицы. Так как управление данными и метаданными осуществляется независимо, вы можете переименовать таблицу или зарегистрировать ее в новой базе данных, не перемещая данные. Инженеры данных часто предпочитают неуправляемые таблицы и гибкость, которую они обеспечивают при обработке рабочих данных.

Существует несколько способов создания неуправляемых таблиц, в том числе следующие.

CREATE TABLE table_name
USING DELTA
LOCATION '/path/to/existing/data'
CREATE TABLE table_name
(field_name1 INT, field_name2 STRING)
LOCATION '/path/to/empty/directory'
df.write.option("path", "/path/to/empty/directory").saveAsTable("table_name")

Что такое представление?

Представление хранит текст для запроса, как правило, к одному или нескольким источникам данных или таблицам в хранилище метаданных. В Databricks представление эквивалентно кадру данных Spark, сохраненному в качестве объекта в базе данных. В отличие от кадров данных представления можно запрашивать из любой части продукта Databricks, разумеется, если у вас есть соответствующее разрешение. Создание представления не обрабатывает и не записывает данные; Только текст запроса регистрируется в хранилище метаданных в связанной базе данных.

Что такое временное представление?

Временное представление имеет ограниченную область действия и сохраняемость и не регистрируется в схеме или каталоге. Время существования временного представления зависит от используемой среды.

  • В записных книжках и заданиях область действия временных представлений ограничена уровнем записной книжки или скрипта. На них нельзя ссылаться за пределами записной книжки, в которой они объявлены, и они прекращают свое существование при окончательном удалении записной книжки с кластера.
  • В Databricks SQL область действия временных представлений ограничена уровнем запроса. Несколько инструкций в одном запросе могут использовать временное представление, однако на него нельзя ссылаться в других запросах даже в рамках одной панели мониторинга.
  • Область действия глобальных временных представлений ограничена уровнем кластера, и они могут совместно использоваться записными книжками или заданиями с общими вычислительными ресурсами. Databricks рекомендует использовать представления с соответствующими списками управления доступом к таблице вместо глобальных временных представлений.

Что такое функция?

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

Как работают реляционные объекты в разностных динамических таблицах?

Разностные динамические таблицы используют декларативный синтаксис для определения DDL, DML и развертывания инфраструктуры и управления ими. При планировании и выполнении логики разностные динамические таблицы используют концепцию "виртуальной схемы". Разностные динамические таблицы могут взаимодействовать с другими базами данных в среде Databricks, а также публиковать и сохранять таблицы для выполнения запросов в другом месте путем указания целевой базы данных в параметрах конфигурации конвейера.

Все таблицы, созданные в разностных динамических таблицах, — это разностные таблицы. При использовании каталога Unity с разностными динамическими таблицами все таблицы являются управляемыми таблицами каталога Unity. Если каталог Unity не активен, таблицы можно объявить как управляемые или неуправляемые таблицы.

Несмотря на то что представления можно объявить в разностных динамических таблицах, их следует рассматривать как временные представления, область действия которых ограничена конвейером. Временные таблицы в разностных динамических таблицах — это уникальная концепция: эти таблицы сохраняют данные в хранилище, но не публикуют их в целевой базе данных.

Некоторые операции, например, APPLY CHANGES INTO, регистрируют в базе данных как таблицу, так и представление. Имя таблицы начинается с подчеркивания (_), а в представлении указывается имя таблицы, объявленное в качестве целевого объекта операции APPLY CHANGES INTO. Представление отправляет запросы к соответствующей скрытой таблице для материализации результатов.