Выполнение федеративных запросов в MySQL

На этой странице описывается, как настроить федерацию Lakehouse для выполнения федеративных запросов к данным MySQL, которые не управляются Azure Databricks. Дополнительные сведения о Федерации Lakehouse см. в статье "Что такое Федерация Lakehouse?"

Чтобы подключиться к базе данных MySQL с помощью Lakehouse Federation, необходимо создать следующее в мета-хранилище Azure Databricks Unity Catalog (рабочие области, созданные после 9 ноября 2023 г., уже автоматически содержат Unity Catalog мета-хранилище):

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

Перед началом работы

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

  • Рабочая область активирована для каталога Unity. Рабочие области, созданные после 9 ноября 2023 г., автоматически включены для каталога Unity, включая автоматическую подготовку хранилища метаданных. Вам не нужно создавать хранилище метаданных вручную, если ваша рабочая область была создана до автоматического включения и не была включена для Unity Catalog. См. автоматическое включение каталога Unity.

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

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

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

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

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

Ssl требуется для создания подключения.

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

Подключение задает путь и учетные данные для доступа к внешней системе базы данных. Чтобы создать подключение, можно использовать обозреватель каталогов или команду 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. В верхней части области каталога щелкните значок " и выберите "Создать подключение" в меню.
  3. На странице Основы подключения мастера Настройка подключения введите удобное Имя подключения.
  4. Выберите тип подключения MySQL .
  5. (Необязательно) Добавьте комментарий.
  6. Нажмите кнопку Далее.
  7. На странице проверки подлинности введите следующие свойства подключения для экземпляра MySQL:
    • Узел: например, mysql-demo.lb123.us-west-2.rds.amazonaws.com
    • Порт: например, 3306
    • Пользователь: например, mysql_user
    • Пароль: например, password123
  8. (Необязательно): выберитесертификат сервера доверия . Этот параметр по умолчанию не выбирается. При выборе уровень транспорта использует SSL для шифрования канала и обхода цепочки сертификатов для проверки доверия. Оставьте это значение по умолчанию, если у вас нет конкретной необходимости обойти проверку доверия.
  9. Щелкните Создать подключение.
  10. На странице основ каталога введите имя для внешнего каталога. Внешний каталог зеркально отражает базу данных во внешней системе данных, чтобы можно было запрашивать и управлять доступом к данным в этой базе данных с помощью Azure Databricks и каталога Unity.
  11. (Необязательно) Нажмите кнопку "Проверить подключение" , чтобы убедиться, что она работает.
  12. Нажмите Создать каталог.
  13. На странице Access выберите рабочие области, в которых пользователи могут получить доступ к созданному каталогу. Вы можете выбрать Все рабочие области имеют доступ, или кликните Назначить рабочим областям, выберите рабочие области и затем нажмите Назначить.
  14. Измените владельца , чтобы он мог управлять доступом ко всем объектам в каталоге. Начните вводить основное имя в текстовом поле, а затем щелкните на него в возвращенных результатах.
  15. Предоставьте привилегии на каталог. Нажмите кнопку "Предоставить":
    1. Укажите субъекты , у которых будет доступ к объектам в каталоге. Начните вводить основное имя в текстовом поле, а затем щелкните на него в возвращенных результатах.
    2. Выберите предустановки привилегий , чтобы предоставить каждому субъекту. Все пользователи учетной записи по умолчанию получают BROWSE.
      • Выберите средство чтения данных в раскрывающемся меню, чтобы предоставить read права доступа к объектам в каталоге.
      • Выберите редактор данных в раскрывающемся меню, чтобы предоставить read и modify привилегии для объектов в каталоге.
      • Вручную выберите привилегии для предоставления.
    3. Щелкните Предоставить.
  16. Нажмите кнопку Далее.
  17. На странице метаданных укажите пары 'ключ-значение' для тегов. Дополнительные сведения см. в статье Применение тегов к защищаемым объектам каталога Unity.
  18. (Необязательно) Добавьте комментарий.
  19. Нажмите кнопку Сохранить.

SQL

Выполните следующую команду в записной книжке или редакторе sql-запросов Databricks.

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

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

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

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

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

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

Примечание.

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

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

Чтобы создать внешний каталог, можно использовать обозреватель каталогов или команду SQL CREATE FOREIGN CATALOG в записной книжке Azure Databricks или редакторе sql-запросов Databricks. Для создания каталога можно также использовать REST API Databricks или интерфейс командной строки Databricks. См. POST /api/2.1/unity-catalog/catalogs и команды Unity Catalog.

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

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

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

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

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

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

  4. Можно также указать следующий параметр каталога:

    • TINYINT(1) is bit: необязательный параметр каталога, указывающий, как столбцы MySQL tinyint(1) сопоставляются с типами данных Spark. Дополнительные сведения см. в сопоставлениях типов данных .

SQL

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

  • <catalog-name>: имя каталога в Azure Databricks.
  • <connection-name>: объект подключения , указывающий источник данных, путь и учетные данные доступа.
  • tinyInt1isBit: необязательный параметр каталога, указывающий, как столбцы MySQL tinyint(1) сопоставляются с типами данных Spark. Дополнительные сведения см. в сопоставлениях типов данных .
CREATE FOREIGN CATALOG [IF NOT EXISTS] <catalog-name> USING CONNECTION <connection-name>
[OPTIONS (tinyInt1isBit {'true'|'false'})];

Поддерживаемые pushdowns

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

Pushdown Поддерживаемые вычислительные ресурсы
Функции даты, времени и метки времени
(только частичные выражения фильтра)
Поддерживается Все вычислительные ресурсы
Фильтры Поддерживается Все вычислительные ресурсы
Предел Поддерживается Все вычислительные ресурсы
Математические функции
(только частичные выражения фильтра)
Поддерживается Все вычислительные ресурсы
Прочие функции
(например, Псевдоним, Приведение, SortOrder; частичное, только выражения фильтра)
Поддерживается Все вычислительные ресурсы
Проекции Поддерживается Все вычислительные ресурсы
Строковые функции
(только частичные выражения фильтра)
Поддерживается Все вычислительные ресурсы
Агрегаты Поддерживается Databricks Runtime 13.3 LTS и выше, а также SQL-хранилища.
Арифметические операторы
(например, +, -, *, %, /; не поддерживается, если ANSI отключен)
Поддерживается Databricks Runtime 13.3 LTS и выше, а также SQL-хранилища.
Логические операторы
(например, =, <, <, =>, >=, <=>)
Поддерживается Databricks Runtime 13.3 LTS и выше, а также SQL-хранилища.
Сортировка при использовании лимита Поддерживается Databricks Runtime 13.3 LTS и выше, а также SQL-хранилища.
Объединения Поддерживаются Databricks Runtime 17.2 и более поздние версии, а также SQL-склады 2025.30 и более поздние версии.
Функции Windows Не поддерживается Не поддерживается

Сопоставление типов данных

При чтении из MySQL в Spark типы данных сопоставляются следующим образом:

Тип MySQL Тип Spark
bigint (если не подписан), десятичная ДесятичныйТип
int, integer, mediumint, smallint Целочисленный тип
tinyint(1) BooleanType/ByteType*
tinyint(>1) ByteType
bigint (если подписан) ДлинныйТип
с плавающей запятой Тип с плавающей запятой
двойной ДвойнойТип
char, перечисление, множество Тип символа
Варчар VarcharType (тип переменной длины)
json, longtext, mediumtext, text, tinytext Тип строки
бинарный (binary), blob, двоичный (varbinary), строковой двоичный (varchar binary) БинарныйТип
бит, булево значение Тип Boolean
дата, год ТипДата
дата и время, время, временная метка** TimestampType/TimestampNTZType

* MySQL tinyint(1) signed/unsigned сопоставляется с Spark BooleanType, если параметр каталога tinyInt1isBit = true (по умолчанию). Если параметр tinyInt1isBit = false каталога сопоставлен с ByteType.

** При чтении из MySQL, MySQL Timestamp сопоставляется с Spark TimestampType, если preferTimestampNTZ = false (по умолчанию). MySQL Timestamp сопоставляется с TimestampNTZType, если preferTimestampNTZ = true.

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