Выполнение федеративных запросов в MySQL
Внимание
Эта функция предоставляется в режиме общедоступной предварительной версии.
В этой статье описывается, как настроить Федерацию Lakehouse для выполнения федеративных запросов к данным MySQL, которые не управляются Azure Databricks. Дополнительные сведения о Федерации Lakehouse см. в статье "Что такое Федерация Lakehouse".
Чтобы подключиться к базе данных MySQL с помощью федерации Lakehouse, необходимо создать следующее в хранилище метаданных каталога Unity Azure Databricks:
- Подключение к базе данных MySQL.
- Внешний каталог, который зеркало базу данных MySQL в каталоге Unity, чтобы использовать синтаксис запросов Unity и средства управления данными для управления доступом пользователей Azure Databricks к базе данных.
Подготовка к работе
Требования к рабочей области:
- Рабочая область включена для каталога Unity.
Требования к вычислениям:
- Сетевое подключение из кластера среды выполнения Databricks или хранилища SQL к целевым системам баз данных. См . рекомендации по сети для Федерации Lakehouse.
- Кластеры Azure Databricks должны использовать Databricks Runtime 13.3 LTS или более поздней версии и режим общего или однопользовательского доступа.
- Склады SQL должны быть профессиональными или бессерверными.
Необходимые разрешения:
- Чтобы создать подключение, необходимо быть администратором хранилища метаданных или пользователем с
CREATE CONNECTION
привилегиями в хранилище метаданных каталога Unity, подключенном к рабочей области. - Чтобы создать внешний каталог, необходимо иметь
CREATE CATALOG
разрешение на хранилище метаданных и быть владельцем подключения или иметьCREATE FOREIGN CATALOG
привилегии для подключения.
Дополнительные требования к разрешениям указываются в каждом разделе на основе задач, который следует выполнить.
Создание подключения
Подключение задает путь и учетные данные для доступа к внешней системе базы данных. Чтобы создать подключение, можно использовать Обозреватель каталога или CREATE CONNECTION
команду SQL в записной книжке Azure Databricks или редакторе sql-запросов Databricks.
Необходимые разрешения: администратор хранилища метаданных или пользователь с привилегиями CREATE CONNECTION
.
Обозреватель каталогов
- В рабочей области Azure Databricks щелкните "Каталог".
- В левой области разверните меню "Внешние данные" и выберите Подключение.
- Нажмите Create connection (Создать подключение).
- Введите понятное имя Подключение ion.
- Выберите тип Подключение ion MySQL.
- Введите следующие свойства подключения для экземпляра MySQL.
- Узел: например,
mysql-demo.lb123.us-west-2.rds.amazonaws.com
- Порт: например,
3306
- Пользователь: например,
mysql_user
- Пароль: например,
password123
- Узел: например,
- (Необязательно) Нажмите кнопку "Проверить подключение" , чтобы убедиться, что она работает.
- (Необязательно) Добавьте комментарий.
- Нажмите кнопку Создать.
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 в записной книжке Azure Databricks или CREATE FOREIGN CATALOG
редакторе sql-запросов Databricks.
Необходимые разрешения:CREATE CATALOG
разрешение на хранилище метаданных и право владения подключением или CREATE FOREIGN CATALOG
привилегией подключения.
Обозреватель каталогов
- В рабочей области Azure Databricks щелкните "Каталог".
- Нажмите кнопку Создать каталог.
- В диалоговом окне "Создание нового каталога" введите имя каталога и выберите типвнешнего пользователя.
- Выберите Подключение, предоставляющий доступ к базе данных, которую вы хотите зеркало в качестве каталога каталога Unity.
- Нажмите кнопку Создать.
SQL
Выполните следующую команду SQL в записной книжке или редакторе SQL Databricks. Элементы в квадратных скобках являются необязательными. Замените значения-заполнители:
<catalog-name>
: имя каталога в Azure Databricks.<connection-name>
: объект подключения, указывающий источник данных, путь и учетные данные доступа.
CREATE FOREIGN CATALOG [IF NOT EXISTS] <catalog-name> USING CONNECTION <connection-name>;
Поддерживаемые pushdowns
Для всех вычислений поддерживаются следующие pushdown:
- Фильтры
- Проекции.
- Лимит
- Функции: частичные, только для выражений фильтров. (Строковые функции, математические функции, функции data, Time и Timestamp и другие другие функции, такие как Псевдоним, Приведение, SortOrder)
Следующие pushdown поддерживаются в Databricks Runtime 13.3 LTS и выше, а также в хранилищах SQL:
- Статистические выражения
- Логические операторы
- Следующие математические функции (не поддерживаются при отключении ANSI): +, -, *, %, /
- Сортировка при использовании с ограничением
Следующие pushdown не поддерживаются:
- Объединения
- Функции Windows
Сопоставление типов данных
При чтении из MySQL в Spark типы данных сопоставляются следующим образом:
Тип MySQL | Тип Spark |
---|---|
bigint (если не подписан), десятичная | DecimalType |
tinyint*, int, integer, mediumint, smallint | IntegerType |
bigint (если подписан) | LongType |
с плавающей запятой | FloatType |
двойной точности | DoubleType |
char, перечисление, набор | Chartype |
varchar | VarcharType |
json, longtext, mediumtext, text, tinytext | StringType |
binary, blob, varbinary, varchar binary | BinaryType |
bit, boolean | BooleanType |
дата, год | DateType |
datetime, time, timestamp** | TimestampType/TimestampNTZType |
tinyint(1) signed
обрабатывается как логический и преобразуется в BooleanType
. См. справочник
* по Подключение or/J при чтении из MySQL, MySQL Timestamp
сопоставляется с SparkTimestampType
, если preferTimestampNTZ = false
(по умолчанию). MySQL Timestamp
сопоставляется с TimestampNTZType
значением if preferTimestampNTZ = true
.