BigQuery:超过对列分区表的分区修改次数的配额

Posted

技术标签:

【中文标题】BigQuery:超过对列分区表的分区修改次数的配额【英文标题】:BigQuery: Exceeded quota for Number of partition modifications to a column partitioned table 【发布时间】:2018-06-08 17:56:01 【问题描述】:

尝试在 BigQuery 上运行大量导入 CSV 作业时出现此错误,该作业使用自定义 Timestamp 列进行日期分区。

您的表超出了对列分区表的分区修改次数的配额

下面的完整错误:

Location: "partition_modifications_per_column_partitioned_table.long"; Message: "Quota exceeded: Your table exceeded quota for Number of partition modifications to a column partitioned table. For more information, see https://cloud.google.com/bigquery/troubleshooting-errors"; Reason: "quotaExceeded"

我不清楚:Number of partition modifications 的配额是多少?以及它是如何被超过的?

谢谢!

【问题讨论】:

【参考方案1】:

分区修改次数的配额是多少?

Quotas for Partitioned tables 特别是:

单个作业修改的最大分区数 - 2,000

每个作业操作(查询或加载)最多可影响 2,000 个分区。任何影响超过 2000 个分区的查询或加载作业都会被 Google BigQuery 拒绝。

每个表每天的最大分区修改次数 - 5,000

您每天最多只能对分区表进行 5,000 次分区修改。可以使用追加或覆盖分区中的数据的操作来修改分区。修改分区的操作包括:加载作业、将结果写入分区的查询或修改分区中数据的 DML 语句(INSERT、DELETE、UPDATE 或 MERGE)。

您可以在上面的链接中查看更多详细信息

【讨论】:

我们总共有大约 6500 个 CSV 文件要加载大约 110 天的数据。每个 csv 都有一个项目的一天数据。据我了解,这将导致每个 csv 进行一次“分区修改” - 对吗?但是,我们看到在错误发生之前只有 389 个 CSV 加载作业成功。即 389 分区修改后的错误 为什么不一次加载所有文件? 如果你的 csv 文件包含 110 天的数据,那么一个 csv 将导致 110 分区修改,因为它的数据将写入 110 个分区。正如 Elliott 建议的那样,只需一次加载所有文件。您总共只有 110 次分区修改。 @ElliottBrossard 谢谢 - 这是有道理的。我还不确定为什么我在 389 而不是 5000 被止损 - 但在我合并文件后这应该不是问题。 您能否提供389分区修改后出现此错误的作业的job_id?常见原因是对该表的其他写入消耗了此配额。 (我不需要项目 id,只需要 job_id 和运行日期就足够了)。谢谢!【参考方案2】:

如果您要经常更改数据,我强烈建议您删除表格,然后使用新值再次上传。每次上传新表时,都会刷新限制。

【讨论】:

以上是关于BigQuery:超过对列分区表的分区修改次数的配额的主要内容,如果未能解决你的问题,请参考以下文章

Bigquery:分区数据超过 2000 限制(更新:现在 4000 限制)[重复]

将超过 7 天的数据插入分区 BigQuery 表

对超过 4000 天数据的 bigquery 表进行分区?

BigQuery 无法修改分区表架构

bigquery 表可以创建的最大分区数

从 Dataflow python 作业写入 bigquery 中的分区表