Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
На этой странице описывается, как настроить федерацию Lakehouse для выполнения объединённых запросов к данным Snowflake, которые не управляются через Azure Databricks. Дополнительные сведения о Федерации 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привилегии.
Дополнительные требования к разрешениям указываются в каждом последующем разделе, посвящённом задачам.
Настройка идентификатора 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 .
Обозреватель каталогов
В рабочей области Azure Databricks щелкните
Каталог.
В верхней части области каталога щелкните
" и выберите "Создать подключение" в меню.На странице Основы подключения мастера Настройка подключения введите удобное для пользователя Имя подключения.
Выберите тип подключенияSnowflake.
Для типа проверки подлинности выберите
Username and password(базовую проверку подлинности) в раскрывающемся меню.(Необязательно) Добавьте комментарий.
Нажмите кнопку Далее.
Введите следующие сведения о проверке подлинности и подключении для хранилища Snowflake. Свойства, относящиеся к выбранному методу проверки подлинности, предшествуют
Auth typeв скобках.-
узел: например,
snowflake-demo.east-us-2.azure.snowflakecomputing.com -
порт: например,
443 -
Пользователь: например,
snowflake-user -
Пароль: например,
password123
-
узел: например,
Нажмите кнопку Далее.
На странице сведений о подключении укажите следующее:
-
Склад Snowflake: например,
my-snowflake-warehouse - (Необязательно) узел прокси-сервера: узел прокси-сервера, используемый для подключения к Snowflake. Также необходимо выбрать Использовать прокси и указать порт прокси.
- (Необязательно) использовать прокси-сервер: следует ли подключаться к Snowflake с помощью прокси-сервера.
- (Необязательно) порт прокси-сервера: порт прокси-сервера, используемый для подключения к Snowflake. Также необходимо выбрать Использовать прокси и указать хост прокси.
- (Необязательно) роль Snowflake: роль безопасности по умолчанию, используемая для сеанса после подключения.
-
Склад Snowflake: например,
Нажмите кнопку Далее.
На странице Основы каталога введите имя иностранного каталога. Внешний каталог зеркально отражает базу данных во внешней системе данных, чтобы можно было запрашивать и управлять доступом к данным в этой базе данных с помощью Azure Databricks и каталога Unity.
(Необязательно) Нажмите кнопку "Проверить подключение" , чтобы убедиться, что она работает.
Нажмите Создать каталог.
На странице Access выберите рабочие области, в которых пользователи могут получить доступ к созданному каталогу. Вы можете выбрать Все рабочие области имеют доступ, или нажать Назначить рабочие области, выбрать рабочие области, а затем нажать Назначить.
Измените владельца , чтобы он мог управлять доступом ко всем объектам в каталоге. Начните вводить адресата в текстовом поле, а затем выберите адресата в возвращенных результатах.
Предоставьте привилегии на каталоге. Нажмите Grant:
- Укажите принципалов , у которых будет доступ к объектам в каталоге. Начните вводить адресата в текстовом поле, а затем выберите адресата в возвращенных результатах.
- Выберите предустановки привилегий , чтобы предоставить их каждому принципалу. Всем пользователям учетной записи предоставлено
BROWSEпо умолчанию.- В раскрывающемся меню выберите средство чтения данных , чтобы предоставить привилегии
readобъектам каталога. - Выберите редактор данных в раскрывающемся меню, чтобы предоставить
readиmodifyпривилегии для объектов в каталоге. - Вручную выберите привилегии для предоставления.
- В раскрывающемся меню выберите средство чтения данных , чтобы предоставить привилегии
- Нажмите Grant.
Нажмите кнопку Далее.
На странице метаданных укажите пары "ключ-значение" для тегов. Дополнительные сведения см. в статье Применение тегов к защищаемым объектам каталога Unity.
(Необязательно) Добавьте комментарий.
Нажмите кнопку Сохранить.
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 |