将数据加载到BigQuery中:直接从流程插入到流程插入,然后通过Google云端硬盘加载?

时间:2019-01-04 01:32:22

标签: google-bigquery

我有一个Google Cloud功能,可以生成存储在Google云端硬盘中的文件。 我想在Big Query中加载这些文件。

直接从函数中加载数据(跳过文件生成,仅在BigQuery中进行某种插入)与从Google云端硬盘中加载数据有何利弊?

我感兴趣的不仅是技术方面的问题和成本,还包括数据处理方法方面的问题。

我认为这个问题可能会导致在线困境或在批处理过程中导致更多困境。

PS:这听起来可能与this帖子重复,但并不完全相同。

1 个答案:

答案 0 :(得分:2)

本地可用文件(在Cloud功能中)

如果文件是在cloud函数内生成的(在其本地环境中0,则加载它与从本地文件系统加载非常相似。这是归结为:

缺点:

  1. 文件总大小应为<= 10Mbs。如果是CSV,则应少于16k行。
  2. 您不能一次将多个文件导出到BQ,而必须遍历每个文件以将其分别加载到BQ。

优点:

  1. 如果文件满足上述约束,您将保存中间本地-> GCS上传文件,并且可以直接加载到BQ。

云存储桶(GCS)中可用的文件

另一方面,如果您决定将云功能中本地生成的文件发送到GCS,然后将其导出到BQ:

优点:

  1. 您可以使用通配符导出到BQ(即同时导出多个文件),大大提高了整体导出速度。
  2. 每个文件的大小限制更加宽松(未压缩情况下为4GB,压缩情况下为5TB)。
  3. 与本地/云功能导出相比,整体导出要快得多。

缺点:

  1. 唯一的缺点可能是,如果您想将数据流式传输到BQ表中,并且如果文件位于GCS存储桶中,则无法直接进行操作。您可以通过本地可用文件来实现。