跳到主要内容

BigQuery Catalog

BigQuery Catalog 通过 Trino Connector 兼容框架,使用 BigQuery Connector 来访问 BigQuery 表。

警告

该功能为实验功能,自 3.0.1 版本开始支持。

适用场景

场景说明
数据集成读取 BigQuery 数据并写入到 Doris 内表。
数据写回不支持。

环境准备

编译 BigQuery Connector 插件

需要 JDK 17 版本。

$ git clone https://github.com/apache/Doris-thirdparty.git
$ cd Doris-thirdparty
$ git checkout trino-435
$ cd plugin/trino-bigquery
$ mvn clean install -DskipTest

完成编译后,会在 trino/plugin/trino-bigquery/target/ 下得到 trino-bigquery-435/ 目录。

也可以直接下载我们预编译的 trino-bigquery-435-20240724.tar.gz 并解压。

部署 BigQuery Connector

trino-bigquery-435/ 目录放到所有 FE 和 BE 部署路径的 connectors/ 目录下。(如果没有,可以手动创建)。

├── bin
├── conf
├── connectors
│ ├── trino-bigquery-435
...

部署完成后,建议重启 FE、BE 节点以确保 Connector 可以被正确加载。

准备 Google Cloud ADC 认证

  1. 安装 gcloud CLI:https://cloud.google.com/sdk/docs/install

  2. 执行 gcloud init --console-only --skip-diagnostics

  3. 执行 gcloud auth login

  4. 执行 gcloud auth application-default login

这一步是生成 ADC 认证文件,生成后的 json 默认放在 ~/.config/gcloud/application_default_credentials.json

配置 Catalog

语法

CREATE CATALOG [IF NOT EXISTS] catalog_name
PROPERTIES (
'type' = 'trino-connector', -- required
'trino.connector.name' = 'bigquery', -- required
{TrinoProperties},
{CommonProperties}
);
  • {TrinoProperties}

    TrinoProperties 部分用于填写将传递给 Trino Connector 的属性,这些属性以trino.为前缀。理论上,Trino 支持的属性这里都支持,更多有关 BigQuery 的属性可以参考 Trino 文档

  • {CommonProperties}

    CommonProperties 部分用于填写通用属性。请参阅 数据目录概述 中【通用属性】部分。

支持的 BigQuery 版本

更多有关 BigQuery 的属性可以参考 Trino 文档

支持的元数据服务

更多有关 BigQuery 的属性可以参考 Trino 文档

支持的存储系统

更多有关 BigQuery 的属性可以参考 Trino 文档

列类型映射

BigQuery TypeTrino TypeDoris Type
booleanbooleanboolean
int64bigintbigint
float64doubledouble
numericdecimal(P, S)decimal(P, S)
bignumricdecimal(P, S)decimal(P, S)
stringvarcharstring
bytesvarbinarystring
datedatedate
datetimetimestamp(6)datetime(6)
timetime(6)string
timestamptimestamp with time zone(6)datetime(6)
geographyvarcharstring
arrayarrayarray
mapmapmap
structrowstruct

基础示例

CREATE CATALOG bigquery_catalog PROPERTIES (
'type' = 'trino-connector',
'trino.connector.name' = 'bigquery',
'trino.bigquery.project-id' = 'your-bigquery-project-id',
'trino.bigquery.credentials-file' = '/path/to/application_default_credentials.json',
);

查询操作

配置好 Catalog 后,可以通过以下方式查询 Catalog 中的表数据:

-- 1. switch to catalog, use database and query
SWITCH bigquery_ctl;
USE bigquery_db;
SELECT * FROM bigquery_tbl LIMIT 10;

-- 2. use bigquery database directly
USE bigquery_ctl.bigquery_db;
SELECT * FROM bigquery_tbl LIMIT 10;

-- 3. use full qualified name to query
SELECT * FROM bigquery_ctl.bigquery_db.bigquery_tbl LIMIT 10;