从外部表读取vs加载数据并在Bigquery中读取数据

时间:2019-12-04 16:57:33

标签: google-cloud-platform google-bigquery

我需要从GCS获取数据(csv格式)到Bigquery,然后对其执行ETL以产生结果。出现的csv格式可能不是固定的,并且可能随每个文件而有所变化。创建临时外部表以直接从GCS读取数据然后进行处理会更好,还是将数据加载到bigquery中的登台表中然后进行处理会更好。我试图了解在执行效率方面更好的设计。任何一种方法都有缺点吗?

2 个答案:

答案 0 :(得分:1)

Google云平台提供了一项名为Composer的服务。这是Apache Airflow的GCP版本,该版本是用于管理数据管道和工作流程的软件。作为GCP产品的Composer具有与GCS和BigQuery一起使用的内置功能。我建议您在Composer中构建管道。

https://cloud.google.com/composer/

我们将composer与GCS和Bigquery结合使用来管理整个ETL过程。

Composer >>从服务中提取原始文件>>将原始文件存储到GCS 编写器>>从GCS中提取原始文件>>转换原始文件>>将转换后的文件存储到GCS >>将转换后的文件存储到BigQuery

Composer具有许多其他管道管理功能,随着ETL变得越来越复杂,您可以利用这些功能。

答案 1 :(得分:1)

如果我正确理解,您希望在不中断流程的情况下处理由错误条目引起的异常。

如果是这种情况,您想使用Cloud DataFlow并使用ParDo处理不良条目,并将其粘贴到cloud pubsub或等效项中,以使用单独的系统进行处理。

有关更多信息,请参见以下URL。

https://cloud.google.com/blog/products/gcp/handling-invalid-inputs-in-dataflow

希望这会有所帮助。