Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
На этой странице описывается, как настроить федерацию Lakehouse для выполнения объединённых запросов к данным Snowflake, которые не управляются через Azure Databricks. Дополнительные сведения о Федерации Lakehouse см. в статье "Что такое Федерация Lakehouse?"
Чтобы подключиться к базе данных Snowflake с помощью федерации Lakehouse, необходимо создать следующее в хранилище метаданных Unity Catalog Azure Databricks (в рабочих областях, созданных после 9 ноября 2023 года, хранилище метаданных Unity Catalog уже автоматически предоставлено).
- Подключение к базе данных Snowflake.
- Внешний каталог , который отражает базу данных Snowflake в каталоге Unity, чтобы использовать синтаксис запросов каталога Unity и средства управления данными для управления доступом пользователей Azure Databricks к базе данных.
На этой странице описывается, как выполнять федеративные запросы к данным Snowflake с помощью встроенной интеграции OAuth Snowflake. Сведения о других методах проверки подлинности см. на следующих страницах:
- OAuth с идентификатором Microsoft Entra
- OAuth с Okta
- Маркер доступа OAuth
- Закрытый ключ PEM
- Обычная проверка подлинности (имя пользователя и пароль)
Федеративные запросы можно выполнять в 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привилегии.
Дополнительные требования к разрешениям указываются в каждом разделе, связанном с задачами, который следует.
Создание интеграции безопасности
В консоли Snowflake выполните команду CREATE SECURITY INTEGRATION. Замените следующие значения:
<integration-name>: уникальное имя для интеграции OAuth.<workspace-url>: URL-адрес рабочей области Azure Databricks. Необходимо установитьOAUTH_REDIRECT_URIвhttps://<workspace-url>/login/oauth/snowflake.html, где<workspace-url>— это уникальный URL-адрес рабочей области Azure Databricks, в которой будет создано подключение к Snowflake.<duration-in-seconds>: длительность действия токенов обновления.Important
OAUTH_REFRESH_TOKEN_VALIDITY— это настраиваемое поле, которое по умолчанию имеет значение 90 дней. После истечения срока действия маркера обновления необходимо повторно пройти проверку подлинности подключения. Установите для поля разумную длительность времени.
Рассмотрим пример.
CREATE SECURITY INTEGRATION <integration-name>
TYPE = oauth
ENABLED = true
OAUTH_CLIENT = custom
OAUTH_CLIENT_TYPE = 'CONFIDENTIAL'
OAUTH_REDIRECT_URI = 'https://<workspace-url>/login/oauth/snowflake.html'
OAUTH_ISSUE_REFRESH_TOKENS = TRUE
OAUTH_REFRESH_TOKEN_VALIDITY = <duration-in-seconds>
OAUTH_ENFORCE_PKCE = TRUE;
Создание подключения
Подключение задает путь и учетные данные для доступа к внешней системе базы данных. Чтобы создать подключение, можно использовать обозреватель каталогов или команду CREATE CONNECTION SQL в записной книжке Azure Databricks или редакторе sql-запросов Databricks.
Note
Для создания подключения можно также использовать REST API Databricks или интерфейс командной строки Databricks. См. POST /api/2.1/unity-catalog/connections и команды каталога Unity .
Необходимые разрешения: администратор хранилища метаданных или пользователь с привилегиями CREATE CONNECTION .
В рабочей области Azure Databricks щелкните
Каталог.
В верхней части области каталога щелкните
" и выберите "Создать подключение" в меню.На странице основы подключения мастера настройки подключения введите понятное имя подключения.
Выберите тип подключенияSnowflake.
Для типа проверки подлинности выберите
OAuthв раскрывающемся меню.(Необязательно) Добавьте комментарий.
Нажмите кнопку Далее.
Введите следующие сведения о проверке подлинности и подключении для хранилища Snowflake.
Узел: например,
snowflake-demo.east-us-2.azure.snowflakecomputing.comПорт: например,
443Пользователь: например,
snowflake-userИдентификатор клиента: в консоли Snowflake запустите
SELECT SYSTEM$SHOW_OAUTH_CLIENT_SECRETS('<security-integration-name>'), чтобы получить идентификатор клиента для интеграции безопасности.Секрет клиента: в консоли Snowflake запустите
SELECT SYSTEM$SHOW_OAUTH_CLIENT_SECRETS('<security-integration-name>'), чтобы получить секрет клиента для интеграции безопасности.Область OAuth:
refresh_token session:role:<role-name>. Укажите роль Snowflake для использования<role-name>.Войдите с помощью Snowflake: щелкните и войдите в Snowflake с помощью учетных данных OAuth.
После успешного входа вы будете перенаправлены обратно в мастер настройки подключения .
Щелкните Создать подключение.
На странице Основы каталога введите имя иностранного каталога. Внешний каталог зеркально отражает базу данных во внешней системе данных, чтобы можно было запрашивать и управлять доступом к данным в этой базе данных с помощью Azure Databricks и каталога Unity.
(Необязательно) Нажмите кнопку "Проверить подключение" , чтобы убедиться, что она работает.
Нажмите Создать каталог.
На странице Access выберите рабочие области, в которых пользователи могут получить доступ к созданному каталогу. Вы можете выбрать Все рабочие области имеют доступ, или нажать Назначить рабочие области, выбрать рабочие области, а затем нажать Назначить.
Измените владельца , чтобы он мог управлять доступом ко всем объектам в каталоге. Начните вводить основной элемент в текстовом поле, а затем щелкните его в результатах поиска.
Предоставьте привилегии в каталоге. Нажмите Grant:
- Укажите принципалов , у которых будет доступ к объектам в каталоге. Начните вводить основной элемент в текстовом поле, а затем щелкните его в результатах поиска.
- Выберите предустановки привилегий , чтобы предоставить их каждому принципалу. Все пользователи учетной записи по умолчанию получают
BROWSE.- В раскрывающемся меню выберите средство чтения данных , чтобы предоставить привилегии
readобъектам каталога. - Выберите редактор данных в выпадающем меню, чтобы предоставить привилегии
readиmodifyдля объектов в каталоге. - Вручную выберите привилегии для предоставления.
- В раскрывающемся меню выберите средство чтения данных , чтобы предоставить привилегии
- Нажмите Grant.
Нажмите кнопку Далее.
Укажите на странице метаданных пары "ключ-значение" тегов. Дополнительные сведения см. в статье Применение тегов к защищаемым объектам каталога Unity.
(Необязательно) Добавьте комментарий.
Нажмите кнопку Сохранить.
Идентификаторы базы данных с учетом регистра
Поле database внешнего каталога сопоставляется с идентификатором базы данных Snowflake. Если идентификатор базы данных Snowflake не чувствителен к регистру, форматирование, используемое в внешнем каталоге <database-name>, сохраняется. Однако если идентификатор базы данных Snowflake чувствителен к регистру, необходимо обернуть внешний каталог <database-name> в двойные кавычки, чтобы сохранить регистр.
Рассмотрим пример.
databaseпреобразуется вDATABASE"database"преобразуется вdatabase"database"""преобразуется вdatabase"Чтобы избежать двойной кавычки, используйте еще одну двойную кавычку.
"database""приводит к ошибке, так как двойные кавычки не экранируются правильно.
Дополнительные сведения см. в разделе "Требования к идентификатору" в документации по Snowflake.
Поддерживаемые продвижения
Поддерживаются следующие методы снижения:
- Filters
- Projections
- Limit
- Joins
- Агрегаты (Average, Corr, CovPopulation, CovSample, Count, Max, Min, StddevPop, StdevSamp, Sum, VariancePop, VarianceSamp)
- Функции (строковые функции, математические функции, функции data, time и timestamp и другие прочие функции, такие как псевдоним, приведение, сортировка)
- Функции Windows (DenseRank, Rank, RowNumber)
- Sorting
Сопоставление типов данных
При чтении из Snowflake в Spark типы данных сопоставляются следующим образом:
| Тип снежинка | Тип Spark |
|---|---|
| десятичная, число, числовой | DecimalType |
| bigint (большое целое число), byteint (байтовое целое число), int (целое число), integer (целое число), smallint (малое целое число), tinyint (крошечное целое число) | IntegerType |
| float (вещественное число), float4 (четырёхкомпонентный вектор из вещественных чисел), float8 (восьмикомпонентный вектор из вещественных чисел) | FloatType |
| двойной, двойная точность, вещественное число | DoubleType |
| char, символ, строка, текст, время, varchar | StringType |
| binary | BinaryType |
| boolean | BooleanType |
| date | DateType |
| datetime, timestamp, timestamp_ltz, timestamp_ntz, timestamp_tz | TimestampType |
Ограничения федерации запросов
- Конечная точка OAuth Snowflake должна быть доступна из IP-адресов уровня управления Azure Databricks. См. исходящие IP-адреса из плоскости управления Azure Databricks. Snowflake поддерживает настройку сетевых политик на уровне интеграции безопасности, что позволяет отдельной политике обеспечивать прямое подключение от контрольной панели Azure Databricks к конечной точке OAuth для авторизации.
- Использование прокси, Прокси-узел, Прокси-порт и параметры конфигурации роли Snowflake не поддерживаются. Укажите роль Snowflake в рамках области OAuth.
Дополнительные ресурсы
См. следующие статьи в документации по Snowflake: