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


Выполнение федеративных запросов в 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 .

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

  1. В рабочей области Azure Databricks щелкните Значок каталога"Каталог".
  2. В левой области разверните меню "Внешние данные" и выберите Подключение.
  3. Нажмите Create connection (Создать подключение).
  4. Введите понятное имя Подключение ion.
  5. Выберите тип Подключение ion MySQL.
  6. Введите следующие свойства подключения для экземпляра MySQL.
    • Узел: например, mysql-demo.lb123.us-west-2.rds.amazonaws.com
    • Порт: например, 3306
    • Пользователь: например, mysql_user
    • Пароль: например, password123
  7. (Необязательно) Нажмите кнопку "Проверить подключение" , чтобы убедиться, что она работает.
  8. (Необязательно) Добавьте комментарий.
  9. Нажмите кнопку Создать.

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 привилегией подключения.

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

  1. В рабочей области Azure Databricks щелкните Значок каталога"Каталог".
  2. Нажмите кнопку Создать каталог.
  3. В диалоговом окне "Создание нового каталога" введите имя каталога и выберите типвнешнего пользователя.
  4. Выберите Подключение, предоставляющий доступ к базе данных, которую вы хотите зеркало в качестве каталога каталога Unity.
  5. Нажмите кнопку Создать.

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.