2 TB+ 大小表的 Bigquery Redshift 迁移

Posted

技术标签:

【中文标题】2 TB+ 大小表的 Bigquery Redshift 迁移【英文标题】:Bigquery Redshift migration of 2 TB+ size table 【发布时间】:2019-07-22 11:53:04 【问题描述】:

我正在尝试将 Redshift 迁移到 BigQuery。表大小为2TB+ 我正在使用 bigquery redshift 数据传输服务。 但是迁移运行了 5 个多小时。

还可以看到,在 Redshift 端执行的查询会将数据卸载到 50 MB 的块中。由于 Redshift 传输作业中无法配置块大小参数。

预计将 2TB 数据从 redshfit 传输到 BigQuery 需要这么长时间,或者可以采取一些措施来改进这项工作。

从 Redshift 到结束只需 2-3 小时,就会有一些像雪花一样的系统。

【问题讨论】:

【参考方案1】:

Bigquery redshift 数据传输服务建立在 Google Cloud Storage Transfer Service 之上。端到端数据移动涉及: 1.从Redshift集群中提取数据到S3 2. 将数据从 S3 移动到 GCS 3. 从GCS加载数据到BQ

虽然第 2 步和第 3 步很快,但第一步实际上受到 Redshift 集群本身的限制,因为执行 UNLOAD 命令的是 Redshift 集群。

加快此过程的一些选项可以是: 1.升级到强大的集群。 2. 执行 Redshift 工作负载管理 (https://docs.aws.amazon.com/redshift/latest/dg/c_workload_mngmt_classification.html) 以赋予 Migration Account(提供给 Bigquery redshift 数据传输服务的帐户)更高的优先级和运行 UNLOAD 命令的资源。

【讨论】:

其实我建议您直接联系 bq-dts-support@google.com 以获得官方帮助。我的团队正在做 Bigquery redshift 数据传输服务,相信你会得到足够的支持。【参考方案2】:

我没有使用 redshift 数据传输服务的经验,但我使用过 Google Cloud Storage Transfer Service(可用here),根据我的经验,它的可扩展性非常好。它应该在一小时内传输 2TB 的数据。如果您有数百万个小文件要传输,可能需要几个小时,但它仍然可以工作。

在 Google 云存储中获取数据后,您可以将其导入 BigQuery 或创建一个联合表来扫描 Google 云存储中的数据。

【讨论】:

但我相信 BigQuery 数据传输服务不会将数据暂存到 GCS 存储桶中。它直接将数据从 S3 加载到 bigquery。这是因为该服务不要求我指定任何 gcs 存储桶,也不会创建任何暂存存储桶。更新:数据卸载查询仍在运行 只是为了澄清一点,以防引起混淆:我的回答不建议使用“BigQuery 数据传输服务”,而是建议使用“谷歌云存储传输服务”。跨度> 是的,我明白,为什么不使用 s3->gcs->BQ,而不是 s3->BQ ? 也许 S3->BQ 路线也会很快工作,如果是这样,这对你来说可能是一种更简单的方法——我没有使用该路线的经验,所以不知道它是否快速或慢的。我建议使用 s3->gcs->bq 路线,因为根据我自己的经验,我知道这条路线很快。

以上是关于2 TB+ 大小表的 Bigquery Redshift 迁移的主要内容,如果未能解决你的问题,请参考以下文章

在 2 TB 数据的 BigQuery 中进行日期分区的有效方法是啥?

如何计算查询bigquery的大小?

在所有项目中查找 Bigquery 表大小

将 10 MB 数据上传到 Bigquery

BigQuery - 最大数据集大小

确认如何计算 bigquery 查询成本