导出数据到 ClickHouse 需要多久?
将表数据导出到 GCS
在此步骤中,我们使用 BigQuery SQL 工作区 来执行 SQL 命令。下面,我们将使用EXPORT DATA 语句,把名为 mytable 的 BigQuery 表导出到 GCS 存储桶。uri 参数中使用了 * 字符。这可确保在导出数据超过 1GB 时,输出会拆分为多个文件,并带有按数字递增的后缀。这种方法有几个优点:- Google 允许每天免费将最多 50TB 的数据导出到 GCS。用户只需支付 GCS 存储费用。
- 导出会自动生成多个文件,并将每个文件的表数据限制在最多 1GB。这对 ClickHouse 很有利,因为这样可以并行导入。
- Parquet 作为一种列式格式,是更理想的交换格式,因为它原生支持压缩,而且 BigQuery 导出更快,ClickHouse 查询也更高效
将数据从 GCS 导入到 ClickHouse
导出完成后,我们就可以将这些数据导入到 ClickHouse 表中。你可以使用 ClickHouse SQL 控制台 或clickhouse-client 执行以下命令。你必须先在 ClickHouse 中创建表:parallel_distributed_insert_select 设置,以加快导出速度。如果只有一个 ClickHouse 节点,则可以跳过此步骤:INSERT INTO SELECT 命令将 GCS 中的数据插入 ClickHouse 表,该命令会根据 SELECT 查询的结果将数据插入表中。要获取用于 INSERT 的数据,我们可以使用 s3Cluster 函数从 GCS 存储桶中读取数据,因为 GCS 与 Amazon S3 兼容。如果你只有一个 ClickHouse 节点,则可以使用 S3 表函数来代替 s3Cluster 函数。ACCESS_ID 和 SECRET,就是与你的 GCS 存储桶关联的 HMAC 密钥。