Поделиться через


Выполнение федеративных запросов в Google BigQuery

В этой статье описывается, как настроить федерацию Lakehouse для выполнения федеративных запросов к данным BigQuery, которые не управляются Azure Databricks. Дополнительные сведения о Федерации Lakehouse см. в статье "Что такое Федерация Lakehouse?".

Чтобы подключиться к базе данных BigQuery с помощью федерации Lakehouse, необходимо создать следующее в хранилище метаданных каталога Unity Azure Databricks:

  • Подключение к базе данных BigQuery.
  • внешний каталог, который дублирует базу данных BigQuery в каталоге Unity, чтобы использовать синтаксис запросов и инструменты управления данными Unity Catalog для управления доступом пользователей Azure Databricks к базе данных.

Подготовка к работе

Требования к рабочей области:

  • Рабочая область подключена к каталогу Unity.

Требования к вычислениям:

  • Сетевое подключение из кластера среды выполнения Databricks или хранилища SQL к целевым системам баз данных. См . рекомендации по сети для Федерации Lakehouse.
  • Кластеры Azure Databricks должны использовать Databricks Runtime 16.1 или более поздней версии и общий или единый режим доступа пользователей.
  • Склады SQL должны быть профессиональными или бессерверными.

Необходимые разрешения:

  • Чтобы создать подключение, необходимо быть администратором хранилища метаданных или пользователем с правами 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 .

Обозреватель каталогов

  1. В рабочей области Azure Databricks щелкните значок каталога каталог.

  2. В верхней части области каталога щелкните значок Добавить или плюсзначок "Добавить" и выберите Добавить подключения в меню.

    Кроме того, на странице быстрого доступа нажмите кнопку Внешние данные , перейдите на вкладку подключения и щелкните Создать подключение.

  3. На странице основы подключения мастера настройки подключения введите понятное имя подключения.

  4. Выберите тип подключения Google BigQuery, а затем нажмите кнопку Далее.

  5. На странице проверки подлинности введите ключ учетной записи службы Google для экземпляра BigQuery.

    Это необработанный объект JSON, используемый для указания проекта BigQuery и предоставления проверки подлинности. Этот объект JSON можно создать и скачать на странице сведений о учетной записи службы в Google Cloud в разделе "КЛЮЧИ". Учетная запись службы должна иметь соответствующие разрешения, предоставленные в BigQuery, включая пользователя BigQuery и средство просмотра данных BigQuery. Пример приведен ниже.

    {
      "type": "service_account",
      "project_id": "PROJECT_ID",
      "private_key_id": "KEY_ID",
      "private_key": "PRIVATE_KEY",
      "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"
    }
    
  6. (Необязательно) Введите идентификатор проекта для вашей инстанции BigQuery.

    Это имя проекта BigQuery, используемого для выставления счетов для всех запросов, выполняемых в этом соединении. По умолчанию используется идентификатор проекта учетной записи службы.

  7. (Необязательно) Добавьте комментарий.

  8. Щелкните Создать подключение.

  9. На странице основы каталога введите имя внешнего каталога. Внешний каталог зеркально отражает базу данных во внешней системе данных, чтобы можно было запрашивать и управлять доступом к данным в этой базе данных с помощью Azure Databricks и каталога Unity.

  10. (Необязательно) Щелкните Проверить подключение, чтобы убедиться, что оно работает.

  11. Щелкните Создать каталог.

  12. На странице Access выберите рабочие области, в которых пользователи могут получить доступ к созданному каталогу. Вы можете выбрать параметр Все рабочие области имеют доступили нажать Назначить рабочим областям, выбрать рабочие области, а затем нажать Назначить.

  13. Измените владельца, который сможет управлять доступом ко всем объектам в каталоге. Начните вводить субъект в текстовом поле, а затем щелкните субъект в возвращенных результатах.

  14. Предоставьте привилегии на каталог. Щелкните Предоставить:

    1. Укажите участников , у которых будет доступ к объектам в каталоге. Начните вводить субъект в текстовом поле, а затем щелкните субъект в возвращенных результатах.
    2. Выберите предустановки привилегий , чтобы предоставить их каждому принципалу. Всем пользователям учетной записи предоставлено BROWSE по умолчанию.
      • Выберите считыватель данных в раскрывающемся меню, чтобы предоставить read привилегии на объекты в каталоге.
      • Выберите редактор данных в раскрывающемся меню, чтобы предоставить read и modify привилегии для объектов в каталоге.
      • Вручную выберите привилегии для предоставления.
    3. Щелкните Предоставить.
  15. Нажмите кнопку Далее.

  16. На странице метаданных введите пары тегов "ключ-значение". Дополнительные сведения см. в статье Применение тегов к защищаемым объектам каталога Unity.

  17. (Необязательно) Добавьте комментарий.

  18. Нажмите кнопку Сохранить.

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. Чтобы создать внешний каталог, используйте подключение к источнику данных, который уже определен.

Чтобы создать внешний каталог, можно использовать обозреватель каталогов или CREATE FOREIGN CATALOG в записной книжке Azure Databricks или редакторе sql-запросов Databricks. Для создания каталога можно также использовать REST API Databricks или интерфейс командной строки Databricks. См. POST /api/2.1/unity-catalog/catalogs или команды каталога Unity .

Необходимые разрешения:CREATE CATALOG разрешение на хранилище метаданных и право владения подключением или CREATE FOREIGN CATALOG привилегией подключения.

Обозреватель каталогов

  1. В рабочей области Azure Databricks щелкните значок каталога каталога, чтобы открыть обозреватель каталогов.

  2. В верхней части области каталога щелкните значок Добавить или плюсзначок "Добавить" и выберите Добавить каталог в меню.

    Кроме того, на странице быстрого доступа нажмите кнопку "Каталогов", а затем нажмите кнопку "Создать каталог".

  3. (Необязательно) Введите следующее свойство каталога:

    идентификатор проекта данных: имя проекта BigQuery, содержащего данные, которые будут сопоставлены с этим каталогом. По умолчанию используется идентификатор проекта выставления счетов, заданный на уровне подключения.

  4. Следуйте инструкциям, по созданию иностранных каталогов в Создание каталогов.

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)
  • Статистические выражения
  • Сортировка при использовании с ограничением
  • Соединения (Databricks Runtime 16.1 или более поздней версии)

Следующие 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.