Выполнение федеративных запросов в Amazon Redshift
В этой статье описывается, как настроить Федерацию Lakehouse для выполнения федеративных запросов на данных Amazon Redshift, которые не управляются Azure Databricks. Дополнительные сведения о Федерации Lakehouse см. в статье "Что такое Федерация Lakehouse?".
Чтобы подключиться к запросам запуска в базе данных Amazon Redshift с помощью Федерации Lakehouse, необходимо создать в хранилище метаданных каталога Unity Azure Databricks:
- Подключение к запросам запуска в базе данных Amazon Redshift.
- внешний каталог, который зеркально отражает ваши запросы Run в базе данных Amazon Redshift в Unity Catalog, что позволяет использовать синтаксис запросов 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
.
Обозреватель каталогов
В рабочей области 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
для объектов в каталоге. - Вручную выберите привилегии для предоставления.
- Выберите средство чтения данных в выпадающем меню, чтобы предоставить
- Щелкните Предоставить.
Нажмите кнопку Далее.
На странице метаданных укажите пары "ключ-значение" тегов. Дополнительные сведения см. в статье Применение тегов к защищаемым объектам каталога 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>')
)
Сведения о настройке секретов см. в разделе "Управление секретами".
Создание внешнего каталога
Примечание.
Если вы используете пользовательский интерфейс для создания подключения к источнику данных, создание внешнего каталога включено, и вы можете пропустить этот шаг.
Внешний каталог зеркально отражает базу данных во внешней системе данных, чтобы можно было запрашивать и управлять доступом к данным в этой базе данных с помощью 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 в редакторе запросов записной книжки или 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
Сопоставление типов данных
При чтении из Redshift в Spark типы данных сопоставляются следующим образом:
Тип Redshift | Тип Spark |
---|---|
numeric | DecimalType |
int2, int4 | IntegerType |
int8, oid, xid | LongType |
float4 | FloatType |
двойная точность, float8, деньги | DoubleType |
bpchar, char, символ переменный, имя, супер, текст, tid, varchar | StringType |
bytea, geometry, varbyte | BinaryType |
bit, bool | BooleanType |
Дата | DateType |
tabstime, time, time with time zone, timetz, timetz, timestamp with timestamp with timestamp, timestamptz, timestamptz, timestamptz без часового пояса* | TimestampType/TimestampNTZType |
*При чтении из Redshift Redshift Redshift Timestamp
сопоставляется с Spark TimestampType
, если infer_timestamp_ntz_type = false
(по умолчанию). Redshift Timestamp
сопоставляется с TimestampNTZType
значением if infer_timestamp_ntz_type = true
.