【问题标题】:Reading from External Table vs Loading data and reading from it in Bigquery从外部表读取与加载数据并在 Bigquery 中读取
【发布时间】:2019-12-04 16:57:33
【问题描述】:
我需要从 GCS 获取数据(csv 格式)到 Bigquery,然后对其执行 ETL 以产生结果。过来的 csv 格式可能不是固定的,并且可能会随着每个文件而微妙地改变。创建临时外部表以直接从 GCS 读取数据然后对其进行处理会更好,还是将数据加载到 bigquery 中的临时表中然后从中处理会更好。我试图了解在执行效率方面什么是更好的设计。任何方法都有缺点吗?
【问题讨论】:
标签:
google-cloud-platform
google-bigquery
【解决方案1】:
Google Cloud Platform 有一项名为 Composer 的服务。这是 Apache Airflow 的 GCP 版本,它是用于管理数据管道和工作流的软件。作为 GCP 产品的 Composer 具有与 GCS 和 BigQuery 配合使用的内置函数。我建议您在 Composer 中构建您的管道。
https://cloud.google.com/composer/
我们使用 Composer 与 GCS 和 Bigquery 来管理整个 ETL 流程。
Composer >> 从服务中提取原始文件 >> 将原始文件存储到 GCS
Composer >> 从 GCS 提取原始文件 >> 转换原始文件 >> 将转换后的文件存储到 GCS >> 将转换后的文件存储到 BigQuery
Composer 具有许多额外的管道管理功能,当您的 ETL 变得越来越复杂时,您可以利用这些功能。