Skip to main content

从 RisingWave 导出数据到 Google BigQuery

本文描述了如何将数据从 RisingWave 导出到 Google BigQuery。

BigQuery 是 Google 的全托管数据仓库和数据分析平台,能够处理和分析大量数据,因为它具有很高的可扩展性。

您可以通过在 RisingWave 仓库的 integration_test directory 中使用 big-query-sink demo 来在您自己的设备上测试这一过程。

开始之前

在从 RisingWave 导出数据到 BigQuery 之前,请确保以下内容:

  • 目标 BigQuery 表可以从 RisingWave 访问。
  • 确保您在 RisingWave 中有一个可以从中导出数据的上游物化视图或表。

句法

CREATE SINK [ IF NOT EXISTS ] sink_name  
[FROM sink_from | AS select_query]
WITH (
connector='bigquery',
connector_parameter = 'value', ...
);

参数

参数名称描述
sink_name要创建的 Sink 的名称。
sink_from指定将数据输出的直接来源的子句。sink_from 可以是物化视图或表。必须指定此子句或 select_query 查询之一。
AS select_query指定要输出到 Sink 的数据的 SELECT 查询。必须指定此查询或一个 sink_from 子句。关于 SELECT 命令的句法和示例,请参见 SELECT
type必填。只支持 append-only 类型的 Sink,因为 BigQuery 对更新和删除的支持有限。
force_append_only可选。如果为 true,即使不可能也强制 Sink 为 append-only
bigquery.local.path可选。位于您本地服务器的 JSON 密钥文件的文件路径。详情可以在您的 Google Cloud 账户下的 Service Accounts 中找到。必须指定 bigquery.local.pathbigquery.s3.path 中的至少一个。
bigquery.s3.path可选。位于 S3 中的 JSON 密钥文件的文件路径。详情可以在您的 Google Cloud 账户下的 Service Accounts 中找到。必须指定 bigquery.local.pathbigquery.s3.path 中的至少一个。
bigquery.project必填。BigQuery 项目 ID。
bigquery.dataset必填。BigQuery 数据集 ID。
bigquery.table必填。目标 BigQuery 表。
access_key有条件必填。S3 文件的访问密钥。如果要导出到 S3 文件,则必须指定此项。
secret_access有条件必填。S3 文件的,秘密访问密钥。如果要导出到 S3 文件,则必须指定此项。
region有条件必填。S3 文件的服务区域。如果要导出到 S3 文件,则必须指定此项。

示例

我们可以使用本地 JSON 密钥文件创建一个 BigQuery Sink。

CREATE SINK big_query_sink_local
FROM mv1
WITH (
connector = 'bigquery',
type = 'append-only',
bigquery.local.path= '${bigquery_service_account_json_path}',
bigquery.project= '${project_id}',
bigquery.dataset= '${dataset_id}',
bigquery.table= '${table_id}',
force_append_only='true'
);

或者我们可以使用 S3 JSON 密钥文件创建 BigQuery Sink。

CREATE SINK big_query_sink_s3
FROM mv1
WITH (
connector = 'bigquery',
type = 'append-only',
bigquery.s3.path= '${s3_service_account_json_path}',
bigquery.project= '${project_id}',
bigquery.dataset= '${dataset_id}',
bigquery.table= '${table_id}',
access_key = '${aws_access_key}',
secret_access = '${aws_secret_access}',
region = '${aws_region}',
force_append_only='true'
);

数据类型映射

RisingWave 数据类型BigQuery 数据类型
booleanbool
smallintint64
integerint64
bigintint64
real不支持
double precisionfloat64
numericnumeric
datedate
character varying (varchar)string
time without time zone不支持
timestamp without time zonedatetime
timestamp with time zonetimestamp
intervalinterval
structstruct
arrayarray
byteabytes
JSONBJSON
serialint64