我的团队正在使用Google平台开发数据平台。我们将公司的数据上传到上,并尝试在Bigquery上创建数据集市。但是,为了节省GCP的使用成本,我们考虑将所有数据从gcs加载到bigquery,或者在bigquery上创建外部表。
哪种方式更符合成本效益?
发布于 2022-02-25 10:24:21
BigQuery和外部表容量使datalake (文件)和数据仓库(结构化数据)之间的边界变得模糊,您的问题也是相关的。
当您使用外部表时,缺少了几个特性,比如集群和分区,并且您的文件被动态解析(使用类型转换) ->处理时间更慢,并且无法控制/限制进程的数据量。此外,文件中可能出现的错误会破坏查询。
使用本机表时,对BigQuery处理、数据已经清理和分析、表已分区和群集的数据存储进行了优化。
成本问题是一个很难的多重问题。首先,我们可以讨论数据存储。如果GCS中有文件,而BigQuery中有相同的数据,则需要支付两次存储费用。然而,在没有任何更新的90天后,数据进入BigQuery中的“存档”存储模式,成本降低了2倍。此外,在集成到BigQuery之后,还可以将GCS文件移动到一个冷存储区。
那是储藏室的。然后是处理。首先,处理成本大约是存储成本的10倍,这是最需要关注的事情。执行BigQuery请求时,需要支付查询扫描的数据量。如果有分区或集群,使用BigQuery本机表,则可以限制扫描的数据量,从而大大降低成本。对于外部表,您不能使用分区和群集特性,因此始终需要支付全部数据。
因此,这取决于(一如既往)您的数据量和请求的频率。
不要忘记一些额外的东西:对于外部表,您可能会有可能中断查询的错误。在生产模式中,它可以是戏剧性的。在这件事上想聪明点。
最后,请求外部表比本机表慢(没有分区,因此需要处理更多数据和解析/转换持续时间)。因为时间就是金钱(如果你有时间关键的查询),而非物质成本也会影响你的选择。
发布于 2022-04-06 04:54:12
@guillaume blaquiere的答案是可以的,但他忘了提到一些重要的事情:可以执行分区查询。可以创建链接到存储区中的桶的分区外部表。例:
然后,您可以在来自BigQuery的SQL查询中使用"dt“或"lang”过滤器。
https://cloud.google.com/bigquery/docs/hive-partitioned-queries-gcs
https://stackoverflow.com/questions/71261259
复制相似问题