Поделиться через


Что такое Федерация Lakehouse?

В этой статье представлена «Lakehouse Federation», платформа для объединения запросов, которая позволяет использовать Azure Databricks для выполнения запросов к нескольким внешним источникам данных. В нем также описывается настройка подключений федерации Lakehouse и создание внешних каталогов в вашем хранилище метаданных каталога Unity.

Что такое Федерация Lakehouse?

Федерация Lakehouse — это платформа федерации запросов для Azure Databricks. Федерация запросов описывает набор функций, позволяющих пользователям и системам выполнять запросы к нескольким источникам данных без необходимости переносить все данные в единую систему.

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

Зачем использовать федерацию Lakehouse?

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

  • Специальные отчеты.
  • Пилотный проект.
  • Исследовательская фаза новых ETL-потоков данных или отчетов.
  • Поддержка рабочих нагрузок во время добавочной миграции.

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

Федерация Lakehouse предназначена для вариантов использования, когда:

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

Федерация Lakehouse против Lakeflow Connect

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

Если у вас есть выбор между управляемыми соединителями и Федерацией Lakehouse, выберите Федерацию Lakehouse для следующих сценариев:

  • Нерегламентированные отчеты или работа с доказательством концепции над конвейерами ETL.

Общие сведения о настройке федерации Lakehouse

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

  • соединение— защищаемый объект в Unity Catalog, указывающий путь и учетные данные для доступа к внешней системе баз данных.

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

Поддерживаемые источники данных

Федерация Lakehouse поддерживает подключения к следующим источникам:

Требования к подключению

Требования к рабочей области:

  • Рабочее пространство активировано для использования с каталогом Unity.

Требования к вычислениям:

  • Сетевое подключение от вашего вычислительного ресурса к целевым системам баз данных. См. рекомендации по сетевому взаимодействию для Lakehouse Федерации.
  • Вычислительные ресурсы Azure Databricks должны использовать Databricks Runtime 13.3 LTS или более поздней версии и Стандартный или Выделенный режим доступа.
  • Хранилища SQL должны быть профессиональными или бессерверными и должны использовать 2023.40 или более поздней версии.

Необходимые разрешения:

  • Чтобы создать подключение, необходимо быть администратором хранилища метаданных или пользователем с правами CREATE CONNECTION в хранилище метаданных каталога Unity, подключенном к рабочей области.
  • Чтобы создать внешний каталог, необходимо иметь разрешение CREATE CATALOG в хранилище метаданных и быть владельцем подключения или иметь привилегию CREATE FOREIGN CATALOG на подключение.

Дополнительные требования к разрешениям указываются в каждом последующем разделе, посвящённом задачам.

Создание подключения

Подключение задает путь и учетные данные для доступа к внешней системе базы данных. Чтобы создать подключение, можно использовать обозреватель каталогов или команду CREATE CONNECTION SQL в записной книжке Azure Databricks или редакторе sql-запросов Databricks.

Примечание.

Для создания подключения можно также использовать REST API Databricks или интерфейс командной строки Databricks. См. POST /api/2.1/unity-catalog/connections и команды каталога Unity .

Необходимые разрешения: администратор хранилища метаданных или пользователь с привилегиями CREATE CONNECTION .

Обозреватель каталогов

  1. В рабочей области Azure Databricks щелкните значок данных.Каталог.

  2. В верхней части области каталога щелкните значок Add or plus iconДобавить и выберите Добавить подключение из меню.

    Со страницы быстрого доступа нажмите кнопку Внешние данные >, перейдите на вкладку Соединения и щелкните Создать подключение.

  3. Введите понятное имя подключения.

  4. Выберите тип подключения (поставщик базы данных, например MySQL или PostgreSQL).

  5. (Необязательно) Добавьте комментарий.

  6. Нажмите Далее.

  7. Введите свойства подключения (например, сведения о узле, пути и учетные данные доступа).

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

  8. Щелкните Создать подключение.

  9. Введите имя внешнего каталога.

  10. (Необязательно) Нажмите кнопку "Проверить подключение" , чтобы убедиться, что она работает.

  11. Щелкните Создать каталог.

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

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

  14. Назначьте привилегии для в каталоге. Щелкните Предоставить:

    1. Укажите участников , которые будут иметь доступ к объектам в каталоге. Начните вводить объект в текстовом поле, а затем щелкните на объект в полученных результатах.
    2. Выберите предустановки привилегий для каждого участника. Все пользователи учетной записи получают BROWSE по умолчанию.
      • Выберите средство чтения данных в раскрывающемся меню, чтобы предоставить read привилегии для объектов в каталоге.
      • Выберите редактор данных в раскрывающемся меню, чтобы предоставить read и modify привилегии для объектов в каталоге.
      • Вручную выберите привилегии для предоставления.
    3. Нажмите Предоставить.
    4. Нажмите Далее.
    5. На странице метаданных укажите ключи и значения тегов. Дополнительные сведения см. в статье Применение тегов к защищаемым объектам каталога Unity.
    6. (Необязательно) Добавьте комментарий.
    7. Нажмите кнопку Сохранить.

SQL

Выполните следующую команду в записной книжке или редакторе sql-запросов. Этот пример предназначен для подключений к базе данных PostgreSQL. Параметры отличаются по типу подключения. См. статью о типе подключения, указанную в оглавлении слева.

CREATE CONNECTION <connection-name> TYPE postgresql
OPTIONS (
  host '<hostname>',
  port '<port>',
  user '<user>',
  password '<password>'
);

Мы рекомендуем использовать секреты Azure Databricks вместо строк открытого текста для конфиденциальных значений, таких как учетные данные. Например:

CREATE CONNECTION <connection-name> TYPE postgresql
OPTIONS (
  host '<hostname>',
  port '<port>',
  user secret ('<secret-scope>','<secret-key-user>'),
  password secret ('<secret-scope>','<secret-key-password>')
)

Сведения о настройке секретов см. в разделе "Управление секретами".

Для получения сведений об управлении существующими подключениями см. статью Управление подключениями для федерации Lakehouse.

Создание внешнего каталога

Примечание.

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

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

Чтобы создать внешний каталог, можно использовать обозреватель каталогов или команду SQL CREATE FOREIGN CATALOG в записной книжке Azure Databricks или редакторе запросов SQL. Вы также можете использовать API каталога Unity. См. справочную документацию Azure Databricks.

Метаданные внешнего каталога синхронизируются с каталогом Unity при каждом взаимодействии с каталогом. Сведения о сопоставлении типов данных между каталогом Unity и источником данных см. в разделе "Сопоставления типов данных" документации по каждому источнику данных.

Необходимые разрешения:CREATE CATALOG разрешение на хранилище метаданных и право владения подключением или CREATE FOREIGN CATALOG привилегией подключения.

Обозреватель каталогов

  1. В рабочей области Azure Databricks щелкните значок данных.Каталог , чтобы открыть обозреватель каталогов.

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

    Кроме того, на странице быстрого доступа нажмите кнопку каталогов, а затем нажмите кнопку "Создать каталог".

  3. Следуйте инструкциям по созданию иностранных каталогов в Создать каталоги.

SQL

Выполните следующую команду SQL в записной книжке или редакторе sql-запросов. Элементы в квадратных скобках являются необязательными. Замените значения полей-заполнителей.

  • <catalog-name>: имя каталога в Azure Databricks.
  • <connection-name>: объект подключения , указывающий источник данных, путь и учетные данные доступа.
  • <database-name>. Имя базы данных, которую вы хотите зеркально отражать в качестве каталога в Azure Databricks. Не требуется для MySQL, использующего двухуровневое пространство имен.
  • <external-catalog-name>: Databricks-to-Databricks только: Имя каталога во внешней рабочей области Databricks, который вы зеркалируете. См. Создатьвнешний каталог.
CREATE FOREIGN CATALOG [IF NOT EXISTS] <catalog-name> USING CONNECTION <connection-name>
OPTIONS (database '<database-name>');

Сведения об управлении и работе с иностранными каталогами см. в статье Управление и работа с иностранными каталогами.

Загрузка данных из внешних таблиц с материализованными представлениями

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

При использовании Lakehouse Federation пользователи могут ссылаться на федеративные данные следующим образом:

CREATE MATERIALIZED VIEW xyz AS SELECT * FROM federated_catalog.federated_schema.federated_table;

Просмотр системных федеративных запросов

Федерация Lakehouse преобразует инструкции Databricks SQL в инструкции, которые можно отправить в федеративный источник данных. Чтобы просмотреть сформированный оператор SQL, щелкните узел сканирования источника внешних данных в графовом представлении профиля запросовили запустите оператор EXPLAIN FORMATTED SQL. Дополнительные сведения см. в разделе "Поддерживаемые pushdown " документации по каждому источнику данных.

Ограничения

  • Запросы доступны только для чтения.

    Единственное исключение заключается в использовании федерации Lakehouse для объединения имеющегося хранилища метаданных Hive в рабочей области (также известного как федерация хранилища метаданных Hive). Внешние таблицы в этом сценарии доступны для записи. См. Что означает запись в внешний каталог в федеративном хранилище метаданных Hive?.

  • Определение регулирования подключений осуществляется с помощью ограничения на одновременные запросы в Databricks SQL. Для каждого подключения не существует ограничений между складами. См. статью "Очереди и автомасштабирование для pro и классических хранилищ SQL".

  • Таблицы и схемы с именами, недопустимыми в каталоге Unity, не поддерживаются и игнорируются каталогом Unity при создании внешнего каталога. См. список правил именования и ограничений в разделе Ограничения.

  • Имена таблиц и имена схем преобразуются в нижний регистр в каталоге Unity. Поиски также должны использовать строчные названия. Если имеются таблицы или схемы с повторяющимися строчными именами, импортируется только одна из таблиц или схем в внешний каталог.

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

  • Выделенный режим доступа (прежнее название — режим доступа с одним пользователем) доступен только для пользователей, которым принадлежит подключение.

  • Федерация Lakehouse не может федеративно работать с внешними таблицами с регистрозависимыми идентификаторами для подключений к Azure Synapse или Redshift.

Квоты ресурсов

Azure Databricks применяет квоты ресурсов ко всем защищаемым объектам каталога Unity. Эти квоты перечислены в ограничениях ресурсов. Внешние каталоги и все объекты, которые они содержат, включаются в общее использование квоты.

Если вы ожидаете превышение этих ограничений ресурсов, обратитесь к группе учетных записей Azure Databricks.

Вы можете отслеживать использование квоты с помощью API квот ресурсов Unity каталога. См. Мониторинг использования квот ресурсов каталога Unity.

Дополнительные ресурсы