将数据加载到具有不同分区的新 BigQuery 表中

问题描述 投票:0回答:1

我一直在尝试将 BigQuery 转储从每日分区表加载到每小时分区表,但遇到以下错误: 我创建了一个按小时分区的新表,因为我们发现按小时分区对于我们的业务模型表现更好,我现在正在尝试将数据从每日分区表迁移到按小时分区。

两个表都在列 dt(时间戳)上进行分区,唯一的区别是新表的分区过期时间为 180 天,并且很少有字段用于通过 cidmtclid 对分区进行聚类,sid。两个表都位于同一区域的同一数据集下。我将 JSON 格式的数据导出到存储桶中,现在我尝试导入它,但收到此错误:

 query: Too many partitions produced by query, allowed 4000, query
produces at least 4050 partitions

我使用的命令如下:

bq load --project_id=<my-project-id> --source_format=NEWLINE_DELIMITED_JSON --noreplace --autodetect --time_partitioning_type=HOUR --time_partitioning_field=dt --time_partitioning_expiration=15552000 --clustering_fields=cid,mt,clid,sid --noreplace -ignore_unknown_values=true  <my-dataset>.<my-new-table> gs://<my-bucket>/<shards-name>*

在上面的命令中,尖括号之间的所有内容都替换为我当前项目的数据集、表和存储桶。 有什么解决方法可以导入转储吗?更多信息:每日表有 624,892,214。行。 我还在GCP文档中发现一个表只能有4000个表,这解释了错误,但是如何加载较旧的数据?

谢谢

google-cloud-platform google-bigquery bigdata
1个回答
0
投票

添加此文档作为@guillaume blaquiere提到的内容的参考。

考虑探索表集群,因为在处理超过 4000 个分区时这是一个更好的选择。结合集群和分区是另一个可行的选择,但需要更多的时间和技术技能才能成功部署。

还有本指南可用于故障排除

© www.soinside.com 2019 - 2024. All rights reserved.