在 BigQuery 中将大量数据从美国数据集迁移到欧盟数据集的最佳方法?

Posted

技术标签:

【中文标题】在 BigQuery 中将大量数据从美国数据集迁移到欧盟数据集的最佳方法?【英文标题】:Best way to migrate large amount of data from US dataset to EU dataset in BigQuery? 【发布时间】:2016-03-02 19:10:53 【问题描述】:

在位于美国的多个数据集中托管的单个 BigQuery 项目中,我在大约 100 万个表中拥有许多 TB。我需要将所有这些数据移动到欧盟托管的数据集中。这样做的最佳选择是什么?

我会将表导出到 Google Cloud Storage,然后使用加载作业重新导入,但每个项目每天的加载作业数量限制为 10K 我会将其作为带有“允许大结果”的查询并保存到目标表中,但这不适用于跨区域

我现在看到的唯一选择是使用 BQ 流 API 重新插入所有数据,这将是成本高昂的。

在 BigQuery 中跨区域移动多个表中的大量数据的最佳方法是什么?

【问题讨论】:

How to best handle data stored in different locations in Google BigQuery?的可能重复 【参考方案1】:

你有几个选择:

    使用加载作业,并联系 Google Cloud 支持以请求配额例外。他们可能会临时授予 100k 左右(如果没有,请联系我,tigani@google,我可以这样做)。 使用联合查询作业。也就是说,将数据移动到欧盟的 GCS 存储桶中,然后使用 GCS 数据源通过 BigQuery 查询重新导入数据。更多信息here。

我也会研究我们是否可以全面提高这个配额限制。

【讨论】:

【参考方案2】:

您可以使用BigQuery Copy Dataset(在/跨区域)复制数据集。复制数据集 UI 类似于复制表。只需从源数据集中单击“复制数据集”按钮,然后在弹出的表单中指定目标数据集。请参阅下面的屏幕截图。查看公共文档了解更多用例。

【讨论】:

【参考方案3】:

自几年前乔丹回答以来,现在还有一些其他选项。这些选项可能对某些人有用:

    使用 Cloud Composer 通过 GCS 存储桶编排导出和加载。见here。 使用 Cloud Dataflow 通过 GCS 存储桶编排导出和加载。见here。

免责声明:我为第二个选项(使用 Cloud Dataflow)撰写了这篇文章。

【讨论】:

以上是关于在 BigQuery 中将大量数据从美国数据集迁移到欧盟数据集的最佳方法?的主要内容,如果未能解决你的问题,请参考以下文章

如何解决 BigQuery 中的“在美国位置找不到数据集”错误?

Google -Bigquery 错误“未找到:在美国位置找不到数据集 prime-poc:churn”

如何在新的 bigquery 项目中将表复制到空数据集?

Firebase BigQuery 迁移 bash 错误

需要 Crashlytics firebase BigQuery(小)示例数据集

Apache Beam 数据流 BigQuery