在 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”