【问题标题】:Save large BigQuery results to another project's BigQuery将大型 BigQuery 结果保存到另一个项目的 BigQuery
【发布时间】:2018-02-23 07:16:20
【问题描述】:

我需要在一个项目的 BigQuery 上运行连接查询,这可能会返回大量数据(可能不适合 VM 的内存),然后将结果保存到另一个项目的 BigQuery 中。

有没有一种简单的方法可以在不将数据加载到 VM 的情况下执行此操作,因为数据大小可能会有所不同,并且 VM 可能没有足够的内存来加载它?

【问题讨论】:

  • 您应该批量读取查询结果并将它们保存到VM磁盘。

标签: google-bigquery google-cloud-platform


【解决方案1】:

要将查询结果保存到任何项目中的表中 - 您无需先将其保存到 VM,您只需正确设置目标属性,当然您需要对包含该表的数据集具有写入权限!

目标属性可能因您使用的client tool 而异
例如,如果你使用 REST API 的 jobs.insert 你应该设置下面的属性

configuration.query.destinationTable 嵌套对象 [可选]
描述应存储查询结果的表。如果不 目前,将创建一个新表来存储结果。这 必须为超过最大值的大型结果设置属性 响应大小。

configuration.query.destinationTable.datasetId 字符串 [必需]
这 包含此表的数据集的 ID。

configuration.query.destinationTable.projectId 字符串 [必需]
这 包含此表的项目的 ID。

configuration.query.destinationTable.tableId 字符串 [必需]
身份证 的表。 ID 只能包含字母(a-z、A-Z)、数字 (0-9) 或下划线 (_)。最大长度为 1,024 个字符。

【讨论】:

    【解决方案2】:

    一种方法是绕过虚拟机进行操作并改用 Google Cloud Storage。

    流程如下所示

    1. 创建两个项目都可以访问的 GS 存储桶
    2. 源项目 - 将表导出到 GS 存储桶(可以从 Web 界面执行此操作,很确定 CLI 工具可以做到)
    3. 目标项目 - 从 GS 存储桶中的文件创建新表

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-12-19
      • 1970-01-01
      • 1970-01-01
      • 2022-12-28
      • 2020-08-24
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多