Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
На этой странице описывается, как настроить федерацию 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 .
Обозреватель каталогов
- В рабочей области Azure Databricks щелкните
Каталог.
- В верхней части области каталога щелкните
" и выберите "Создать подключение" в меню. - На странице Основы подключения мастера Настройка подключения введите удобное Имя подключения.
- Выберите тип подключения MySQL .
- (Необязательно) Добавьте комментарий.
- Нажмите кнопку Далее.
- На странице проверки подлинности введите следующие свойства подключения для экземпляра MySQL:
-
Узел: например,
mysql-demo.lb123.us-west-2.rds.amazonaws.com -
Порт: например,
3306 -
Пользователь: например,
mysql_user -
Пароль: например,
password123
-
Узел: например,
- (Необязательно): выберитесертификат сервера доверия
. Этот параметр по умолчанию не выбирается. При выборе уровень транспорта использует SSL для шифрования канала и обхода цепочки сертификатов для проверки доверия. Оставьте это значение по умолчанию, если у вас нет конкретной необходимости обойти проверку доверия. - Щелкните Создать подключение.
- На странице основ каталога введите имя для внешнего каталога. Внешний каталог зеркально отражает базу данных во внешней системе данных, чтобы можно было запрашивать и управлять доступом к данным в этой базе данных с помощью Azure Databricks и каталога Unity.
- (Необязательно) Нажмите кнопку "Проверить подключение" , чтобы убедиться, что она работает.
- Нажмите Создать каталог.
- На странице Access выберите рабочие области, в которых пользователи могут получить доступ к созданному каталогу. Вы можете выбрать Все рабочие области имеют доступ, или кликните Назначить рабочим областям, выберите рабочие области и затем нажмите Назначить.
- Измените владельца , чтобы он мог управлять доступом ко всем объектам в каталоге. Начните вводить основное имя в текстовом поле, а затем щелкните на него в возвращенных результатах.
- Предоставьте привилегии на каталог. Нажмите кнопку "Предоставить":
- Укажите субъекты , у которых будет доступ к объектам в каталоге. Начните вводить основное имя в текстовом поле, а затем щелкните на него в возвращенных результатах.
- Выберите предустановки привилегий , чтобы предоставить каждому субъекту. Все пользователи учетной записи по умолчанию получают
BROWSE.- Выберите средство чтения данных в раскрывающемся меню, чтобы предоставить
readправа доступа к объектам в каталоге. - Выберите редактор данных в раскрывающемся меню, чтобы предоставить
readиmodifyпривилегии для объектов в каталоге. - Вручную выберите привилегии для предоставления.
- Выберите средство чтения данных в раскрывающемся меню, чтобы предоставить
- Щелкните Предоставить.
- Нажмите кнопку Далее.
- На странице метаданных укажите пары 'ключ-значение' для тегов. Дополнительные сведения см. в статье Применение тегов к защищаемым объектам каталога Unity.
- (Необязательно) Добавьте комментарий.
- Нажмите кнопку Сохранить.
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 привилегией подключения.
Обозреватель каталогов
В рабочей области Azure Databricks щелкните
Каталог , чтобы открыть обозреватель каталогов.
В верхней части области каталога
щелкните значок Добавить или плюс значок "Добавить " и выберитеДобавить каталог в меню.Кроме того, на странице быстрого доступа нажмите кнопку "Каталоги", а затем нажмите кнопку "Создать каталог".
Следуйте инструкциям по созданию внешних каталогов в Создание каталогов.
Можно также указать следующий параметр каталога:
-
TINYINT(1) is bit: необязательный параметр каталога, указывающий, как столбцы MySQLtinyint(1)сопоставляются с типами данных Spark. Дополнительные сведения см. в сопоставлениях типов данных .
-
SQL
Выполните следующую команду SQL в записной книжке или редакторе SQL Databricks. Элементы в квадратных скобках являются необязательными. Замените значения заполнителей:
-
<catalog-name>: имя каталога в Azure Databricks. -
<connection-name>: объект подключения , указывающий источник данных, путь и учетные данные доступа. -
tinyInt1isBit: необязательный параметр каталога, указывающий, как столбцы MySQLtinyint(1)сопоставляются с типами данных Spark. Дополнительные сведения см. в сопоставлениях типов данных .
CREATE FOREIGN CATALOG [IF NOT EXISTS] <catalog-name> USING CONNECTION <connection-name>
[OPTIONS (tinyInt1isBit {'true'|'false'})];
Поддерживаемые pushdowns
В следующей таблице перечислены операции pushdown, поддерживаемые MySQL, а также вычислительные ресурсы, необходимые для каждого из них.
| Pushdown | Поддерживаемые вычислительные ресурсы |
|---|---|
| Функции даты, времени и метки времени (только частичные выражения фильтра) |
|
| Фильтры |
|
| Предел |
|
| Математические функции (только частичные выражения фильтра) |
|
| Прочие функции (например, Псевдоним, Приведение, SortOrder; частичное, только выражения фильтра) |
|
| Проекции |
|
| Строковые функции (только частичные выражения фильтра) |
|
| Агрегаты |
|
| Арифметические операторы (например, +, -, *, %, /; не поддерживается, если ANSI отключен) |
|
| Логические операторы (например, =, <, <, =>, >=, <=>) |
|
| Сортировка при использовании лимита |
|
| Объединения |
|
| Функции 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.