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


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

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

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

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

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

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

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

Примечание.

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

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

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

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

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

    Кроме того, на странице быстрого доступа нажмите кнопку Внешние данные , перейдите на вкладку подключения и щелкните Создать подключение.

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

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

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

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

  7. На странице проверки подлинности введите следующие свойства подключения для экземпляра Azure Synapse.

    • Узел: например, sqldws-demo.database.windows.net.
    • Порт: например, 1433
    • Пользователь
    • Пароль
    • сертификат сервера доверия. Этот параметр по умолчанию не выбран. При выборе уровень транспорта использует SSL для шифрования канала и обхода цепочки сертификатов для проверки доверия. Оставьте значение по умолчанию, если у вас нет конкретной необходимости обойти проверку доверия.
  8. Щелкните Создать подключение.

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

  10. (Необязательно) Нажмите кнопку "Проверить подключение" , чтобы убедиться, что она работает.

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

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

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

  14. Предоставьте привилегии на каталоге. Щелкните Предоставить:

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

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

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

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

SQL

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

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

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

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

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

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

Примечание.

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

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

Чтобы создать внешний каталог, можно использовать обозреватель каталогов или команду SQL CREATE FOREIGN CATALOG в записной книжке Azure Databricks или редакторе запросов SQL.

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

Необходимые разрешения: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>');

Поддерживаемые pushdowns

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

  • Фильтры
  • Проекции.
  • Предел
  • Агрегаты (среднее, количество, макс, мин, StddevPop, StddevSamp, Sum, VarianceSamp)
  • Функции (Арифметические и другие прочие функции, такие как Псевдоним, Каст, SortOrder)
  • Сортировка

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

  • Объединения
  • Функции Windows

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

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

Тип Synapse Тип Spark
десятичные, деньги, числовые, небольшие деньги DecimalType
smallint ShortType
tinyint ByteType
INT IntegerType
bigint LongType
real FloatType
с плавающей запятой DoubleType
char, nchar, ntext, nvarchar, text, uniqueidentifier, varchar, xml StringType
binary, geography, geometry, image, timestamp, udt, varbinary BinaryType
bit BooleanType
Дата DateType
datetime, datetime, smalldatetime, time TimestampType/TimestampNTZType*

*При чтении из Synapse / хранилища данных SQL (SQLDW) SQLDW datetimes сопоставляются с Spark TimestampType , если preferTimestampNTZ = false (по умолчанию). SQLDW datetimes сопоставляется с TimestampNTZType значением if preferTimestampNTZ = true.