Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
На этой странице описывается, как настроить Федерацию Lakehouse для выполнения федеративных запросов к данным Oracle, которые не управляются Azure Databricks. Дополнительные сведения о Федерации Lakehouse см. в статье "Что такое Федерация Lakehouse?"
Чтобы подключиться к базе данных Oracle с помощью Lakehouse Federation, необходимо создать следующее в хранилище метаданных Azure Databricks Unity Catalog (рабочие области, созданные после 9 ноября 2023 г., уже имеют хранилище метаданных Unity Catalog автоматически подготовленное):
- Подключение к вашей базе данных Oracle.
- внешний каталог, который отражает вашу базу данных Oracle в Unity Catalog, чтобы вы могли использовать синтаксис запросов Unity Catalog и средства управления данными для управления доступом пользователей Azure Databricks к базе данных.
Limitations
Федерация Lakehouse поддерживает только подключения TLS к Oracle Cloud. Подключения к другим базам данных Oracle используют собственное сетевое шифрование (NNE).
Существует известная проблема при подключении к экземплярам 11.2.0.3.0 и более поздних версий, которые не имеют значения часовой зоны
Etc/UTC(ошибка:ORA-01882: timezone region not found).- Обходной путь: используйте конфигурацию
spark.databricks.connector.oracle.timezoneAsRegion, которая напрямую сопоставляется со свойством драйвера JDBCoracle.jdbc.timezoneAsRegion. - Предупреждение. Обходное решение может привести к неправильному поведению времени летнего времени (DST). Для получения справки обратитесь в службу поддержки Oracle.
- Обходной путь: используйте конфигурацию
License
Драйвер Oracle и другие необходимые jar-модули Oracle управляются лицензией FDHUT без щелчка.
Перед началом работы
Прежде чем начать, убедитесь, что выполнены требования в этом разделе.
Требования к Databricks
Требования к рабочей области:
- Рабочая область настроена с поддержкой для каталога Unity. Рабочие области, созданные после 9 ноября 2023 г., автоматически включены для каталога Unity, включая автоматическую подготовку хранилища метаданных. Вам не нужно создавать хранилище метаданных вручную, если ваша рабочая область была создана до автоматического включения и не была включена для Unity Catalog. См. автоматическое включение каталога Unity.
Требования к вычислениям:
- Сетевое подключение от вычислительной системы к целевым системам баз данных. См. рекомендации по сети для Федерации Lakehouse.
- Вычислительные ресурсы Azure Databricks должны использовать Databricks Runtime 16.1 или более поздней версии и стандартный или выделенный режим доступа.
- Хранилища SQL должны быть профессиональными или бессерверными и должны использовать 2024.50 или более поздней версии.
Необходимые разрешения:
- Чтобы создать подключение, необходимо быть администратором хранилища метаданных или пользователем с правами
CREATE CONNECTIONв хранилище метаданных каталога Unity, подключенном к рабочей области. В рабочих областях, автоматически включённых в каталог Unity, администраторы рабочих областей по умолчанию имеютCREATE CONNECTIONпривилегии. - Чтобы создать внешний каталог, необходимо иметь разрешение
CREATE CATALOGна метахранилище и быть владельцем подключения или иметьCREATE FOREIGN CATALOGпривилегию подключения. В рабочих областях, автоматически включённых в каталог Unity, администраторы рабочих областей по умолчанию имеютCREATE CATALOGпривилегии.
Дополнительные требования к разрешениям указываются в каждом разделе, основанном на задачах.
Требования Oracle
Для подключений, использующих собственное сетевое шифрование, необходимо включить NNE на стороне сервера (ACCEPTED как минимум). См. раздел Настройка шифрования сетевых данных в документации Oracle. Это не относится к подключениям Oracle Cloud, которые вместо этого используют TLS.
Создание подключения Azure Databricks
Подключение задает путь и учетные данные для доступа к внешней системе базы данных. Чтобы создать подключение, можно использовать обозреватель каталогов или команду CREATE CONNECTION SQL в записной книжке Azure Databricks или редакторе sql-запросов Databricks.
Note
Для создания подключения можно также использовать REST API Databricks или интерфейс командной строки Databricks. См. POST /api/2.1/unity-catalog/connections и команды каталога Unity .
необходимые разрешения : администратор хранилища метаданных или пользователь с правами CREATE CONNECTION.
Обозреватель каталогов
- В рабочей области Azure Databricks щелкните
Каталог.
- Щелкните
Подключитесь, а затем щелкните "Подключения".
- Нажмите кнопку "Создать подключение ".
- На странице мастера настройки подключения под названием Основы подключения введите понятное имя подключения.
- Выберите тип подключения Oracle.
- (Необязательно) Добавьте комментарий.
- Нажмите кнопку Далее.
- На странице проверки подлинности введите следующие данные для экземпляра Oracle:
-
узла: например,
oracle-demo.123456.rds.amazonaws.com -
порт: например,
1521 -
User: например,
oracle_user -
Пароль: например,
password123 -
Протокол шифрования:
Native Network Encryption(по умолчанию) илиTransport Layer Security
-
узла: например,
- Щелкните Создать подключение.
- На странице основы каталога введите имя для внешнего каталога. Внешний каталог зеркально отражает базу данных во внешней системе данных, чтобы можно было запрашивать и управлять доступом к данным в этой базе данных с помощью Azure Databricks и каталога Unity.
- (Необязательно) Щелкните «Проверить подключение», чтобы убедиться, что оно работает.
- Щелкните Создать каталог.
- На странице Access выберите рабочие области, в которых пользователи могут получить доступ к созданному каталогу. Вы можете выбрать Предоставить доступ ко всем рабочим областямили щелкнуть Назначить рабочим областям, выбрать рабочие области, а затем щелкнуть Назначить.
- Измените владельца , который сможет управлять доступом ко всем объектам в каталоге. Начните вводить участника в текстовом поле, затем выберите участника в представленных результатах.
- Выдайте привилегию для каталога. Нажмите кнопку "Предоставить":
- Укажите субъекты , у которых будет доступ к объектам в каталоге. Начните вводить участника в текстовом поле, затем выберите участника в представленных результатах.
- Выберите предустановки привилегий для предоставления каждому субъекту. Всем пользователям учетной записи назначается
BROWSEпо умолчанию.- Выберите средство чтения данных в раскрывающемся меню, чтобы предоставить
readпривилегии для объектов в каталоге. - Выберите редактор данных в раскрывающемся меню, чтобы предоставить привилегии
readиmodifyна объекты в каталоге. - Вручную выберите привилегии для предоставления.
- Выберите средство чтения данных в раскрывающемся меню, чтобы предоставить
- Нажмите Grant.
- Нажмите кнопку Далее.
- На странице "Метаданные" укажите пары "ключ-значение" для тегов. Дополнительные сведения см. в статье Применение тегов к защищаемым объектам каталога Unity.
- (Необязательно) Добавьте комментарий.
- Нажмите кнопку Сохранить.
SQL
Выполните следующую команду в записной книжке или редакторе sql-запросов Databricks:
CREATE CONNECTION <connection-name> TYPE oracle
OPTIONS (
host '<hostname>',
port '<port>',
user '<user>',
password '<password>',
encryption_protocol '<protocol>' -- optional
);
Databricks рекомендует использовать azure Databricks секреты вместо строк открытого текста для конфиденциальных значений, таких как учетные данные. Рассмотрим пример.
CREATE CONNECTION <connection-name> TYPE oracle
OPTIONS (
host '<hostname>',
port '<port>',
user secret ('<secret-scope>','<secret-key-user>'),
password secret ('<secret-scope>','<secret-key-password>'),
encryption_protocol '<protocol>' -- optional
)
Если необходимо использовать текст без форматирования в командах SQL записной книжки, избегайте его обрезания, экранируя специальные символы, такие как $ с помощью \. Например, \$.
Для получения информации о настройке секретов см. раздел Управление секретами.
Создание внешнего каталога
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 в ноутбуке или в редакторе SQL запросов. Элементы в квадратных скобках являются необязательными. Замените значения заполнителей:
-
<catalog-name>: имя каталога в Azure Databricks. -
<connection-name>: объект подключения , указывающий источник данных, путь и учетные данные доступа. -
<service-name>: имя службы, которое вы хотите зеркально отображать в качестве каталога в Azure Databricks.
CREATE FOREIGN CATALOG [IF NOT EXISTS] <catalog-name> USING CONNECTION <connection-name>
OPTIONS (service_name '<service-name>');
Поддерживаемые продвижения
В следующей таблице перечислены операции pushdown, поддерживаемые Oracle, а также необходимые вычисления для каждой из них.
| Pushdown | Поддерживаемые вычислительные ресурсы |
|---|---|
| Aggregates |
|
| Cast |
|
| Содержит, Начинается с, Заканчивается на |
|
| Filters |
|
| Limit |
|
| Offset |
|
| Projections |
|
| Присоединения |
|
Сопоставления типов данных
При выгрузке данных из Oracle в Spark, типы данных отображаются следующим образом:
| Тип Oracle | Тип Spark |
|---|---|
| Временная метка с TIMEZONE, Временная метка с местной TIMEZONE | TimestampType |
| ДАТА, ВРЕМЕННАЯ МЕТКА | TimestampType/TimestampNTZType* |
| ЧИСЛО, ВЕЩЕСТВЕННОЕ ЧИСЛО | DecimalType** |
| ДВОИЧНЫЙ FLOAT | FloatType |
| ДВОИЧНОЕ ДВОЙНОЕ | DoubleType |
| CHAR, NCHAR, VARCHAR2, NVARCHAR2 | StringType |
* ДАТА и TIMESTAMP сопоставляются с Spark TimestampType, если spark.sql.timestampType = TIMESTAMP_LTZ (по умолчанию). Они сопоставляются с TimestampNTZType, если spark.sql.timestampType = TIMESTAMP_NTZ.
** ЧИСЛО без указания точности будет сопоставлено с DecimalType(38, 10), так как в Spark отсутствует поддержка для чисел с плавающей точкой типа Decimal.