Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
На этой странице описывается, как настроить федерацию Lakehouse для выполнения федеративных запросов к данным Amazon Redshift, которые не управляются Azure Databricks. Дополнительные сведения о Федерации Lakehouse см. в статье "Подключение к внешним базам данных и каталогам"
Чтобы выполнить запросы на базе данных Amazon Redshift, используя Lakehouse Federation, необходимо создать следующее в хранилище метаданных Unity Catalog для Azure Databricks (рабочие области, созданные после 9 ноября 2023 г., уже имеют провизию для хранилища метаданных каталога Unity):
- Подключение для выполнения запросов в базе данных Amazon Redshift.
- внешний каталог, который зеркально отражает ваши запросы Run в базе данных Amazon Redshift в Unity Catalog, что позволяет использовать синтаксис запросов Unity Catalog и инструменты управления данными для управления доступом пользователей Azure Databricks к базе данных.
Перед началом работы
Требования к рабочей области:
- Рабочая область активирована для 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привилегии.
Дополнительные требования к разрешениям указываются в каждом следующем разделе, основанном на задачах.
Создание подключения
Подключение задает путь и учетные данные для доступа к внешней системе базы данных. Чтобы создать подключение, можно использовать обозреватель каталогов или команду CREATE CONNECTION SQL в записной книжке Azure Databricks или редакторе sql-запросов Databricks.
Note
Для создания подключения можно также использовать REST API Databricks или интерфейс командной строки Databricks. См. POST /api/2.1/unity-catalog/connections и команды каталога Unity .
Необходимые разрешения: администратор хранилища метаданных или пользователь с привилегиями CREATE CONNECTION .
Обозреватель каталогов
- В рабочей области Azure Databricks щелкните
Каталог.
- В верхней части области каталога щелкните
" и выберите "Создать подключение" в меню. - На странице сведений о подключении
мастера настройки подключения введите понятное подключения.имя - Выберите тип подключения Redshift.
- (Необязательно) Добавьте комментарий.
- Нажмите кнопку Далее.
- На странице проверки подлинности
введите следующие свойства подключения для экземпляра Redshift. -
Узел: например,
redshift-demo.us-west-2.redshift.amazonaws.com -
Порт: например,
5439 -
Пользователь: например,
redshift_user -
Пароль: например,
password123
-
Узел: например,
- (Необязательно) Отключить проверку SSL имени хоста.
- Щелкните Создать подключение.
- На странице Основы каталога введите имя иностранного каталога. Внешний каталог зеркально отражает базу данных во внешней системе данных, чтобы можно было запрашивать и управлять доступом к данным в этой базе данных с помощью Azure Databricks и каталога Unity.
- (Необязательно) Нажмите кнопку "Проверить подключение" , чтобы убедиться, что она работает.
- Нажмите Создать каталог.
- На странице Access выберите рабочие области, в которых пользователи могут получить доступ к созданному каталогу. Вы можете выбрать Все рабочие области имеют доступ, или нажать Назначить рабочие области, выбрать рабочие области, а затем нажать Назначить.
- Измените владельца , чтобы он мог управлять доступом ко всем объектам в каталоге. Начните вводить участника в текстовом поле, а затем щелкните по участнику в списке результатов.
- Предоставьте привилегии на каталоге. Нажмите кнопку "Предоставить":
- Укажите принципалов , у которых будет доступ к объектам в каталоге. Начните вводить участника в текстовом поле, а затем щелкните по участнику в списке результатов.
- Выберите предустановки привилегий , чтобы предоставить их каждому принципалу. Всем пользователям учетной записи по умолчанию предоставляется
BROWSE.- В раскрывающемся меню выберите средство чтения данных , чтобы предоставить привилегии
readобъектам каталога. - Выберите редактор данных в раскрывающемся меню, чтобы предоставить
readиmodifyпривилегии для объектов в каталоге. - Вручную выберите привилегии для предоставления.
- В раскрывающемся меню выберите средство чтения данных , чтобы предоставить привилегии
- Нажмите Grant.
- Нажмите кнопку Далее.
- На странице метаданных укажите пары "ключ-значение" тегов. Дополнительные сведения см. в статье Применение тегов к защищаемым объектам каталога Unity.
- (Необязательно) Добавьте комментарий.
- Нажмите кнопку Сохранить.
SQL
Выполните следующую команду в записной книжке или редакторе sql-запросов Databricks.
CREATE CONNECTION <connection-name> TYPE redshift
OPTIONS (
host '<hostname>',
port '<port>',
user '<user>',
password '<password>'
);
Мы рекомендуем использовать секреты Azure Databricks вместо строк открытого текста для конфиденциальных значений, таких как учетные данные. Рассмотрим пример.
CREATE CONNECTION <connection-name> TYPE redshift
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 Catalog.
Необходимые разрешения:CREATE CATALOG разрешение на хранилище метаданных и право владения подключением или CREATE FOREIGN CATALOG привилегией подключения.
Обозреватель каталогов
В рабочей области Azure Databricks щелкните
Каталог , чтобы открыть обозреватель каталогов.
В верхней части панели каталога щелкните значок
"Добавить" и в меню выберите Добавить каталог.Кроме того, на странице быстрого доступа нажмите кнопку каталогов, а затем нажмите кнопку "Создать каталог".
Следуйте инструкциям по созданию внешних каталогов в «Создание каталогов».
SQL
Выполните следующую команду SQL в Jupyter Notebook или в редакторе запросов 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
- Joins
- Агрегаты (среднее, количество, макс., мин., StddevPop, StddevSamp, сумма, VariancePop, VarianceSamp)
- Арифметические операторы (например
+,-, ,*/) - Сравнение и логические операторы
- Содержит, Начинается с, Заканчивается на, Похоже на
- Функции (ASCII, Cast, Coalesce, Concat, Lower, LPad, Reverse, RPad, Substring с положительными литеральными позициями, Translate, Trim, Upper и другие функции, такие как Alias, SortOrder)
- Sorting
Следующие pushdown не поддерживаются:
- Функции окна
- Offset
Сопоставление типов данных
При чтении из Redshift в Spark типы данных сопоставляются следующим образом:
| Тип Redshift | Тип Spark |
|---|---|
numeric |
DecimalType |
int2, int4 |
IntegerType |
int8, oid, xid |
LongType |
float4 |
FloatType |
double precision, float8, money |
DoubleType |
bpchar, char, character varyingnamesupertexttidvarchar |
StringType |
bytea, geometry, varbyte |
BinaryType |
bit, bool |
BooleanType |
date |
DateType |
tabstime, time, time с часовым поясом, timetz, time без часового пояса, timestamp с часовым поясом, timestamp, timestamptz, timestamp без часового пояса* |
TimestampType/TimestampNTZType |
*При чтении из Redshift Timestamp сопоставляется с Spark TimestampType , если infer_timestamp_ntz_type = false (по умолчанию). Redshift Timestamp сопоставляется с TimestampNTZType, если infer_timestamp_ntz_type = true.
Limitations
- Федеративные запросы нельзя выполнять во внешних данных Amazon Redshift.