繁体   English   中英

Bigquery 定价比较:将数据加载到 Bigquery 与使用创建外部表

[英]Bigquery Pricing Comparison : Loading data into Bigquery vs Using Create External Table

我的团队正在使用 Google Cloud Platform 开发数据平台。 我们将我们公司的数据上传到谷歌云存储,并尝试在 Bigquery 上做数据集市。 但是,为了节省GCP的使用成本,我们正在考虑将gcs中的所有数据加载到bigquery或者在bigquery上创建external table。

哪种方式更具成本效益?

BigQuery 和外部表容量使数据湖(文件)和数据仓库(结构化数据)之间的边界变得模糊,你的问题是相关的。

当您使用外部表时,缺少一些功能,如集群和分区,并且您的文件是动态解析的(使用类型转换)-> 处理时间较慢,您无法控制/限制您的数据量过程。 除了文件中可能会破坏您的查询的错误

当您使用本机表时,数据存储针对 BigQuery 处理进行了优化,数据已经清理和解析,表已分区和集群。


成本问题很难解决。 首先,我们可以谈谈数据存储。 如果您在 GCS 中有文件而在 BigQuery 中有相同的数据,您将支付两次存储费用。 然而,在 90 天没有任何更新后,数据在 BigQuery 中进入“存档”存储模式并且便宜了 2 倍。 此外,您还可以在将 GCS 文件集成到 BigQuery 后将其移动到冷存储中。

那是为了存储。 然后是加工。 首先,处理的成本大约是存储的10倍,这是最需要关注的事情。 当您执行 BigQuery 请求时,您需要为查询扫描的数据量付费。 如果您有分区或集群,使用 BigQuery 原生表,您可以限制扫描的数据量,从而大大降低成本。 对于外部表,您不能使用分区和集群功能,因此您总是为全部数据付费。

因此,它(一如既往)取决于您的数据量和请求频率。


不要忘记一些额外的东西:使用外部表你可能会遇到可能破坏你的查询的错误。 在生产模式下,它可能是戏剧性的。 聪明地想一想。

最后,请求外部表比本地表慢(没有分区,因此需要处理更多数据和解析/转换持续时间)。 因为时间就是金钱(如果您有时间紧迫的查询),而无形的成本也会影响您的选择。

@guillaume blaquiere的回答没问题,但他忘了提一些重要的事情:可以进行分区查询。 您可以创建链接到存储中的存储桶的分区外部表。 例如:

  • gs://myBucket/myTable/dt=2019-10-31/lang=zh/foo

  • gs://myBucket/myTable/dt=2018-10-31/lang=fr/bar

然后,您可以在 BigQuery 的 SQL 查询中使用“dt”或“lang”过滤器。

https://cloud.google.com/bigquery/docs/hive-partitioned-queries-gcs

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM