google-bigquery - BigQuery:从 Coldline Cloud Storage 类查询 parquet 文件作为外部数据源的定价
问题描述
BigQuery 允许查询各种存储类中的外部表,包括 Coldline。从 Coldline 访问数据需要支付数据检索费用。
Parquet 格式文件提供列式存储。通过 BigQuery 从 Coldline GCS 访问 Parquet 格式文件时,数据检索成本是基于查询的数据列还是整个 Parquet 文件?
解决方案
为了首先解决您问题的简单部分,BigQuery仅根据为所有需要读取的文件读取的列的逻辑(未压缩)大小收费。如果您在具有 1M 行的文件中读取整数字段“foo”,您将被收取 8MB 的费用(每个 int 8 字节 * 行数)。
如果由于 Hive 分区修剪或 Parquet 标头包含说明该文件对于查询不是必需的信息而可以跳过文件,则扫描该文件不收取任何费用。
您问题的另一部分是关于从 Coldline 读取的计费。如果您在 BigQuery 中从冷线读取,则无需为冷线读取付费。也就是说,请不要指望这种情况会长期存在。谷歌内部正在讨论如何填补这个漏洞。
将来,冷线读取收费时,很可能是这样:运行查询所需的物理字节总量将被计费。
Parquet 文件具有包含文件元数据的标题,然后是具有自己的元数据的块和列。要读取 parquet 文件,您需要读取文件头、块头和列。根据过滤器的不同,某些块可能是可跳过的,在这种情况下,您将不会为此付费。另一方面,某些查询可能需要多次读取同一个文件(例如自连接)。然后,物理读取大小将是每次读取文件时读取的所有字节的总和。
推荐阅读
- php - 在 SQL Server [Moodle] [PHP] 中显示所有但避免重复 DB 列记录
- powershell - Google Cloud Tools for PowerShell Copy-GcsObject 使用多区域存储桶返回错误
- laravel - 将数据从 Laravel Blade 传递到 Vue 组件
- active-directory - UserPrincipal.ChangePassword 是否计入密码历史记录?
- jquery - 为什么属性长度“未定义”?它被声明为全局
- typescript - vscode代码动作方法位置
- python - 从内部导入文件是不好的做法吗?
- ruby-on-rails - Gemfile.lock 已损坏,DEPENDENCIES 部分中缺少 gem
- c# - 在 MVC Web 应用程序中阅读电子邮件 - 如何让 Gmail 收件箱知道该电子邮件已被阅读?
- python - 熊猫数据框优化查询