【问题标题】:BigQuery: Pricing for Querying parquet files, as external data sources, from the Coldline Cloud Storage classBigQuery:从 Coldline Cloud Storage 类查询 parquet 文件作为外部数据源的定价
【发布时间】:2020-08-30 06:22:15
【问题描述】:
BigQuery 允许查询各种存储类including Coldline 中的外部表。
从Coldline访问数据有数据retrieval fee。
Parquet 格式文件提供列式存储。通过 BigQuery 从 Coldline GCS 访问 Parquet 格式文件时,数据检索成本是基于查询的数据列还是整个 Parquet 文件?
【问题讨论】:
标签:
google-bigquery
google-cloud-storage
parquet
【解决方案1】:
为了首先解决您问题的简单部分,BigQuery charges 仅基于为所有需要读取的文件读取的列的逻辑(未压缩)大小。如果您在具有 1M 行的文件中读取整数字段“foo”,您将被收取 8MB 的费用(每个 int 8 字节 * 行数)。
如果由于 Hive 分区修剪或 Parquet 标头包含表明查询不需要该文件的信息而可以跳过文件,则扫描该文件不收费。
您问题的另一部分是关于从 Coldline 读取的计费。如果您在 BigQuery 中从冷线读取,则无需为冷线读取付费。也就是说,请不要指望这种情况会长期存在。谷歌内部正在讨论如何填补这个漏洞。
将来,当冷线读取收费时,很可能会如下:运行查询所需的物理字节总量将被计费。
Parquet 文件具有包含文件元数据的标题,然后是具有自己的元数据的块和列。要读取 parquet 文件,您需要读取文件头、块头和列。根据过滤器的不同,某些块可能是可跳过的,在这种情况下,您将不会为此付费。另一方面,某些查询可能需要多次读取同一个文件(例如自连接)。然后,物理读取大小将是每次读取文件时读取的所有字节的总和。