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


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

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

Чтобы подключиться к базе данных SQL Server с помощью функциональности Lakehouse Federation, необходимо создать следующее в метахранилище Unity Catalog в Azure Databricks:

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

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

Подготовка к работе

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

  • Включена рабочая область для каталога Unity.

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

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

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

  • Чтобы создать подключение, необходимо быть администратором хранилища метаданных или пользователем с правами CREATE CONNECTION в хранилище метаданных каталога Unity, подключенном к рабочей области.
  • Чтобы создать внешний каталог, необходимо иметь разрешение CREATE CATALOG в хранилище метаданных и быть владельцем подключения или иметь привилегию CREATE FOREIGN 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 Server.
    • (Обычная проверка подлинности) Порт
    • (Обычная проверка подлинности) 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 должна быть доступна из 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 в редакторе запросов записной книжки или 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
  • Функции: частичные, только для выражений фильтров. (Строковые функции, математические функции, функции data, Time и Timestamp и другие другие функции, такие как Псевдоним, Приведение, SortOrder)

Следующие pushdown поддерживаются в Databricks Runtime 13.3 LTS и более поздних версиях, а также в вычислительных ресурсах хранилища SQL:

  • 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 SQL Server datetimes сопоставляется с Spark TimestampType , если preferTimestampNTZ = false (по умолчанию). SQL Server datetimes сопоставляются с TimestampNTZType значением if preferTimestampNTZ = true.