Выполнение федеративных запросов в Snowflake (базовая проверка подлинности)

На этой странице описывается, как настроить федерацию Lakehouse для выполнения объединённых запросов к данным Snowflake, которые не управляются через Azure Databricks. Дополнительные сведения о Федерации Lakehouse см. в статье "Подключение к внешним базам данных и каталогам"

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

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

На этой странице описывается, как выполнять федеративные запросы к данным Snowflake с помощью базовой проверки подлинности (имя пользователя и пароль). Сведения о других методах проверки подлинности см. на следующих страницах:

Федеративные запросы можно выполнять в Snowflake с помощью федерации запросов или федерации каталога.

В федерации запросов JDBC отправляет запрос каталога Unity вниз к внешней базе данных. Это идеально подходит для отчетов по запросу или проверки концепции на конвейерах ETL.

В федерации каталогов запрос Unity Catalog выполняется напрямую обращением к файловому хранилищу. Этот подход полезен для добавочной миграции без адаптации кода или в качестве долгосрочной гибридной модели для организаций, которые должны поддерживать некоторые данные в Snowflake вместе с данными, зарегистрированными в каталоге Unity. См. раздел "Включить федерацию каталога Snowflake".

Перед тем как начать

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

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

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

Настройка идентификатора Microsoft Entra

Следуйте инструкциям по настройке идентификатора Microsoft Entra для внешнего OAuth в документации по Snowflake.

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

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

Замечание

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

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

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

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

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

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

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

  5. Для типа проверки подлинности выберите Username and password (базовую проверку подлинности) в раскрывающемся меню.

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

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

  8. Введите следующие сведения о проверке подлинности и подключении для хранилища Snowflake. Свойства, относящиеся к выбранному методу проверки подлинности, предшествуют Auth type в скобках.

    • узел: например, snowflake-demo.east-us-2.azure.snowflakecomputing.com
    • порт: например, 443
    • Пользователь: например, snowflake-user
    • Пароль: например, password123
  9. Нажмите кнопку Далее.

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

    • Склад Snowflake: например, my-snowflake-warehouse
    • (Необязательно) узел прокси-сервера: узел прокси-сервера, используемый для подключения к Snowflake. Также необходимо выбрать Использовать прокси и указать порт прокси.
    • (Необязательно) использовать прокси-сервер: следует ли подключаться к Snowflake с помощью прокси-сервера.
    • (Необязательно) порт прокси-сервера: порт прокси-сервера, используемый для подключения к Snowflake. Также необходимо выбрать Использовать прокси и указать хост прокси.
    • (Необязательно) роль Snowflake: роль безопасности по умолчанию, используемая для сеанса после подключения.
  11. Нажмите кнопку Далее.

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

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

  14. Нажмите Создать каталог.

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

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

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

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

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

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

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

SQL

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

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

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

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

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

Дополнительные параметры подключения

Подключения Snowflake поддерживают следующий расширенный вариант для сред ограниченного исходящего трафика или частных подключений:

  • disableOCSPChecks: Установите значение true, чтобы отключить проверку отзыва сертификатов по протоколу Online Certificate Status Protocol (OCSP) в драйвере Snowflake JDBC. Отключение проверок OCSP пропускает проверку отзыва сертификата.

Important

Разрешите исходящий трафик к OCSP-серверу Snowflake по возможности. Оставьте disableOCSPChecks незаданным или установите для него значение false. Установите значение true только в том случае, если ваша конфигурация с ограничением исходящего трафика или конфигурация частного подключения не позволяет этот трафик.

Этот параметр не отображается в обозревателе каталогов. Его можно задать при создании подключения к SQL:

CREATE CONNECTION <connection-name> TYPE snowflake
OPTIONS (
  <connection-options>,
  disableOCSPChecks 'true'
);

Для существующего подключения используйте ALTER CONNECTION.

Идентификаторы базы данных с учетом регистра

Поле database внешнего каталога сопоставляется с идентификатором базы данных Snowflake. Если идентификатор базы данных Snowflake не чувствителен к регистру, форматирование, используемое в внешнем каталоге <database-name>, сохраняется. Однако если идентификатор базы данных Snowflake чувствителен к регистру, необходимо обернуть внешний каталог <database-name> в двойные кавычки, чтобы сохранить регистр.

Рассмотрим пример.

  • database преобразуется в DATABASE

  • "database" преобразуется в database

  • "database""" преобразуется в database"

    Чтобы избежать двойной кавычки, используйте еще одну двойную кавычку.

  • "database"" приводит к ошибке, так как двойные кавычки не экранируются правильно.

Дополнительные сведения см. в разделе "Требования к идентификатору" в документации по Snowflake.

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

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

  • Фильтры
  • Проекции
  • Лимит
  • Offset
  • Присоединения
  • Агрегаты (Average, Corr, CovPopulation, CovSample, Count, Max, Min, StddevPop, StdevSamp, Sum, VariancePop, VarianceSamp)
  • Функции (строковые функции, математические функции, функции даты, времени и метки времени, а также прочие функции, такие как Alias, Cast и SortOrder)
  • Оконные функции (DenseRank, Rank, RowNumber)
  • Сортировка
  • Top-N (объединение сортировки и ограничения в одну операцию), поддерживаемых в Databricks Runtime 17.3 и более поздних версиях

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

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

Тип снежинка Тип Spark
decimal, , numbernumeric DecimalType
bigint, , byteintintintegersmallint,tinyint IntegerType
float, , float4float8 FloatType
double, , double precisionreal DoubleType
char, , characterstringtexttime,varchar StringType
binary BinaryType
boolean BooleanType
date DateType
datetime, , timestamptimestamp_ltz, timestamp_ntztimestamp_tz TimestampType