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


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

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

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

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

Федерация Lakehouse поддерживает SQL Server, база данных Azure SQL и управляемый экземпляр Azure SQL.

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

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

  • Включена рабочая область для каталога 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 привилегии.

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

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

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

Note

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

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

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

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

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

  3. На странице Основы подключения мастера Настройка подключения введите удобное Имя подключения.

  4. Выберите тип подключения SQL Server.

  5. Выберите тип проверки подлинностиOAuth, OAuth Machine to Machine или Имя пользователя и пароль (обычная проверка подлинности).

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

  7. Нажмите кнопку Далее.

  8. На странице аутентификации введите следующие свойства подключения для экземпляра SQL Server. Свойства, относящиеся к выбранному методу проверки подлинности, предшествуют Auth type в скобках.

    • Хост: ваш сервер SQL.
    • (Базовая аутентификация) Порт
    • (Обычная проверка подлинности) trustServerCertificate: по умолчанию false. Если задано значение true, транспортный слой использует SSL для шифрования канала и обхода цепочки сертификатов для проверки доверия. Оставьте значение по умолчанию, если у вас нет конкретной необходимости обойти проверку доверия.
    • (Обычная проверка подлинности) Пользователь
    • (Обычная проверка подлинности) Пароль
    • (OAuth) Введите сведения о подключении, собранные в разделе Настройка идентификатора Microsoft Entra для федерации SQL Server.
  9. Щелкните Создать подключение.

  10. (Обычная проверка подлинности) На странице сведений о подключении укажите следующее:

    • сертификат сервера доверия. Этот параметр по умолчанию не выбран. При выборе уровень транспорта использует SSL для шифрования канала и обхода цепочки сертификатов для проверки доверия. Оставьте значение по умолчанию, если у вас нет конкретной необходимости обойти проверку доверия.
    • намерение приложения: тип рабочей нагрузки приложения при подключении к серверу.
  11. Нажмите кнопку Далее.

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

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

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

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

  16. Предоставьте привилегии на каталоге. Нажмите Grant:

    1. Укажите ответственных лиц, которые будут иметь доступ к объектам в каталоге. Начните вводить адресата в текстовом поле, а затем выберите адресата в возвращенных результатах.
    2. Выберите предустановки привилегий , чтобы предоставить каждому субъекту. Все пользователи учетной записи получают BROWSE по умолчанию.
      • Выберите средство чтения данных в раскрывающемся меню, чтобы предоставить read привилегии для объектов в каталоге.
      • Выберите редактор данных в раскрывающемся меню, чтобы предоставить read и modify привилегии для объектов в каталоге.
      • Вручную выберите привилегии для предоставления.
    3. Нажмите Grant.
  17. Нажмите кнопку Далее.

  18. На странице метаданных укажите пары тегов «ключ-значение». Дополнительные сведения см. в статье Применение тегов к защищаемым объектам каталога Unity.

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

  20. Нажмите кнопку Сохранить.

Note

(OAuth) Конечная точка OAuth Azure Entra ID должна быть доступна из IP-адресов контрольной плоскости Azure Databricks. Ознакомьтесь с регионами Azure Databricks.

SQL

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

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

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

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

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

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

Note

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

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

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

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

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

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

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

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

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

SQL

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

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

Поддерживаемые продвижения

Для всех вычислений поддерживаются следующие pushdown:

  • Filters
  • Projections
  • Limit
  • Функции: частичные, только для выражений фильтров. (Строковые функции, математические функции, функции данных, времени и временной метки и другие функции, такие как псевдоним, приведение типов, порядок сортировки)

Следующие операции снижения уровня поддерживаются на Databricks Runtime 13.3 LTS и версиях, начиная с этой, а также в SQL warehouse compute.

  • Aggregates
  • Следующие логические операторы: =, <, <=, >, >=, <=>
  • Следующие математические функции (не поддерживаются при отключении ANSI): +, -, *, %, /
  • Следующие прочие операторы: ^, |, ~
  • Сортировка при использовании с ограничением

Следующие pushdown не поддерживаются:

  • Joins
  • Функции Windows

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

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

Тип SQL Server Тип Spark
bigint (без знака), десятичная, деньги, числовые, малые деньги DecimalType
smallint (маленькое целое число), tinyint (крошечное целое число) ShortType
int IntegerType
bigint (если подписан) LongType
real FloatType
float DoubleType
char, nchar, uniqueidentifier CharType
nvarchar (строковый тип данных с поддержкой юникода), varchar (строковый тип данных без поддержки юникода) VarcharType
text, xml StringType
двоичный, география, геометрия, изображение, временная метка, пользовательский тип данных, переменный двоичный BinaryType
bit BooleanType
date DateType
дата-время, дата-время, маленькая дата-время, время TimestampType/TimestampNTZType

При чтении из SQL Server элементы SQL Server datetimes сопоставляются с Spark TimestampType, если preferTimestampNTZ = false (по умолчанию). SQL Server datetimes сопоставляются с TimestampNTZType, если preferTimestampNTZ = true.