从 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.path 或 bigquery.s3.path 中的至少一个。 |
bigquery.s3.path | 可选。位于 S3 中的 JSON 密钥文件的文件路径。详情可以在您的 Google Cloud 账户下的 Service Accounts 中找到。必须指定 bigquery.local.path 或 bigquery.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 数据类型 |
---|---|
boolean | bool |
smallint | int64 |
integer | int64 |
bigint | int64 |
real | 不支持 |
double precision | float64 |
numeric | numeric |
date | date |
character varying (varchar) | string |
time without time zone | 不支持 |
timestamp without time zone | datetime |
timestamp with time zone | timestamp |
interval | interval |
struct | struct |
array | array |
bytea | bytes |
JSONB | JSON |
serial | int64 |