Выполнение федеративных запросов в Google BigQuery
Внимание
Эта функция предоставляется в режиме общедоступной предварительной версии.
В этой статье описывается, как настроить федерацию Lakehouse для выполнения федеративных запросов к данным BigQuery, которые не управляются Azure Databricks. Дополнительные сведения о Федерации Lakehouse см. в статье "Что такое Федерация Lakehouse?".
Чтобы подключиться к базе данных BigQuery с помощью федерации Lakehouse, необходимо создать следующее в хранилище метаданных каталога Unity Azure Databricks:
- Подключение к базе данных BigQuery.
- Внешний каталог , который отражает базу данных BigQuery в каталоге Unity, чтобы использовать синтаксис запросов каталога Unity и средства управления данными для управления доступом пользователей Azure Databricks к базе данных.
Подготовка к работе
Требования к рабочей области:
- Рабочая область включена для каталога Unity.
Требования к вычислениям:
- Сетевое подключение из кластера среды выполнения Databricks или хранилища SQL к целевым системам баз данных. См . рекомендации по сети для Федерации Lakehouse.
- Кластеры Azure Databricks должны использовать Databricks Runtime 13.3 LTS или более поздней версии и режим общего или однопользовательского доступа.
- Склады SQL должны быть профессиональными или бессерверными.
Необходимые разрешения:
- Чтобы создать подключение, необходимо быть администратором хранилища метаданных или пользователем с
CREATE CONNECTION
привилегиями в хранилище метаданных каталога Unity, подключенном к рабочей области. - Чтобы создать внешний каталог, необходимо иметь
CREATE CATALOG
разрешение на хранилище метаданных и быть владельцем подключения или иметьCREATE FOREIGN CATALOG
привилегии для подключения.
Дополнительные требования к разрешениям указываются в каждом разделе на основе задач, который следует выполнить.
Создание подключения
Подключение задает путь и учетные данные для доступа к внешней системе базы данных. Чтобы создать подключение, можно использовать обозреватель каталогов или команду SQL в записной книжке Azure Databricks или CREATE CONNECTION
редакторе sql-запросов Databricks.
Примечание.
Для создания подключения можно также использовать REST API Databricks или интерфейс командной строки Databricks. См. статью POST /api/2.1/unity-catalog/connections и команды каталога Unity.
Необходимые разрешения: администратор хранилища метаданных или пользователь с привилегиями CREATE CONNECTION
.
Обозреватель каталогов
В рабочей области Azure Databricks щелкните "Каталог".
В верхней части области каталога щелкните значок "Добавить " и выберите " Добавить подключение " в меню.
Кроме того, на странице быстрого доступа нажмите кнопку "Внешние данные > ", перейдите на вкладку "Подключения " и нажмите кнопку "Создать подключение".
Введите понятное имя подключения.
Выберите тип подключения BigQuery.
Введите следующее свойство подключения для экземпляра BigQuery.
GoogleServiceAccountKeyJson: необработанный объект JSON, используемый для указания проекта BigQuery и предоставления проверки подлинности. Этот объект JSON можно создать и скачать на странице сведений о учетной записи службы в Google Cloud в разделе "КЛЮЧИ". Учетная запись службы должна иметь соответствующие разрешения, предоставленные в BigQuery, включая пользователя BigQuery и средство просмотра данных BigQuery. Пример приведен ниже.
{ "type": "service_account", "project_id": "PROJECT_ID", "private_key_id": "KEY_ID", "private_key": "-----BEGIN PRIVATE KEY-----\nPRIVATE_KEY\n-----END PRIVATE KEY-----\n", "client_email": "SERVICE_ACCOUNT_EMAIL", "client_id": "CLIENT_ID", "auth_uri": "https://accounts.google.com/o/oauth2/auth", "token_uri": "https://accounts.google.com/o/oauth2/token", "auth_provider_x509_cert_url": "https://www.googleapis.com/oauth2/v1/certs", "client_x509_cert_url": "https://www.googleapis.com/robot/v1/metadata/x509/SERVICE_ACCOUNT_EMAIL", "universe_domain": "googleapis.com" }
(Необязательно) Введите следующее свойство подключения для экземпляра BigQuery:
Идентификатор проекта: имя проекта BigQuery, используемого для выставления счетов для всех запросов, выполняемых при этом подключении. По умолчанию используется идентификатор проекта учетной записи службы.
(Необязательно) Нажмите кнопку "Проверить подключение", чтобы подтвердить сетевое подключение . Это действие не проверяет проверку подлинности.
(Необязательно) Добавьте комментарий.
Нажмите кнопку Создать.
SQL
Выполните следующую команду в записной книжке или редакторе sql-запросов Databricks. Замените <GoogleServiceAccountKeyJson>
необработанный объект JSON, указывающий проект BigQuery и предоставляющий проверку подлинности. Этот объект JSON можно создать и скачать на странице сведений о учетной записи службы в Google Cloud в разделе "КЛЮЧИ". Учетная запись службы должна иметь соответствующие разрешения, предоставленные в BigQuery, включая пользователя BigQuery и средство просмотра данных BigQuery. Пример объекта JSON см . на этой странице на вкладке обозревателя каталогов.
CREATE CONNECTION <connection-name> TYPE bigquery
OPTIONS (
GoogleServiceAccountKeyJson '<GoogleServiceAccountKeyJson>'
);
Рекомендуется использовать секреты Azure Databricks вместо строк открытого текста для конфиденциальных значений, таких как учетные данные. Например:
CREATE CONNECTION <connection-name> TYPE bigquery
OPTIONS (
GoogleServiceAccountKeyJson secret ('<secret-scope>','<secret-key-user>')
)
Сведения о настройке секретов см. в разделе "Управление секретами".
Создание внешнего каталога
Внешний каталог зеркально отражает базу данных во внешней системе данных, чтобы можно было запрашивать и управлять доступом к данным в этой базе данных с помощью Azure Databricks и каталога Unity. Чтобы создать внешний каталог, используйте подключение к источнику данных, который уже определен.
Чтобы создать внешний каталог, можно использовать обозреватель каталогов или записную книжку Azure Databricks или CREATE FOREIGN CATALOG
редактор sql Databricks SQL.
Примечание.
Для создания каталога можно также использовать REST API Databricks или интерфейс командной строки Databricks. См. статью POST /api/2.1/unity-catalog/catalogs или команды каталога Unity.
Необходимые разрешения: CREATE CATALOG
разрешение на хранилище метаданных и право владения подключением или CREATE FOREIGN CATALOG
привилегией подключения.
Обозреватель каталогов
В рабочей области Azure Databricks щелкните каталог , чтобы открыть обозреватель каталогов.
В верхней части области каталога щелкните значок "Добавить " и выберите " Добавить каталог " в меню.
Кроме того, на странице быстрого доступа нажмите кнопку "Каталоги" и нажмите кнопку "Создать каталог ".
(Необязательно) Введите следующее свойство каталога:
Идентификатор проекта данных: имя проекта BigQuery, содержащего данные, которые будут сопоставлены с этим каталогом. По умолчанию используется идентификатор проекта выставления счетов, заданный на уровне подключения.
Следуйте инструкциям по созданию внешних каталогов в каталогах create.
SQL
Выполните следующую SQL-команду в записной книжке или в SQL-редакторе Databricks. Элементы в квадратных скобках являются необязательными. Замените значения заполнителей.
<catalog-name>
: имя каталога в Azure Databricks.<connection-name>
: объект подключения, указывающий источник данных, путь и учетные данные доступа.
CREATE FOREIGN CATALOG [IF NOT EXISTS] <catalog-name> USING CONNECTION <connection-name>;
Поддерживаемые pushdowns
Поддерживаются следующие pushdown:
- Фильтры
- Проекции.
- Лимит
- Функции: частичные, только для выражений фильтров. (Строковые функции, математические функции, функции data, Time и Timestamp и другие другие функции, такие как Псевдоним, Приведение, SortOrder)
- Статистические выражения
- Сортировка при использовании с ограничением
Следующие pushdown не поддерживаются:
- Объединения
- Функции Windows
Сопоставление типов данных
В следующей таблице показано сопоставление типов данных BigQuery с Spark.
Тип BigQuery | Тип Spark |
---|---|
bignumeric, числовой | DecimalType |
int64 | LongType |
float64 | DoubleType |
массив, география, интервал, json, строка, структуру | VarcharType |
байт | BinaryType |
bool | BooleanType |
Дата | DateType |
datetime, time, time, timestamp | TimestampType/TimestampNTZType |
При чтении из BigQuery BigQuery bigQuery Timestamp
сопоставляется с Spark TimestampType
, если preferTimestampNTZ = false
(по умолчанию). BigQuery Timestamp
сопоставляется с TimestampNTZType
значением if preferTimestampNTZ = true
.