我尝试使用Google BQ Api和Google Storage API(我在其中存储所有文件)只是循环遍历所有文件,并在每次迭代期间将新行追加到表中,但是达到了追加到表的配额限制。
最有效的方法是什么?我考虑过为每个文件创建单独的表,而不是在BQ中将它们合并并另存为新表,但是我认为查询中的通配符表数量可能会有限制。有什么建议吗?
答案 0 :(得分:0)
我简而言之建议使用BQ load file mechanism from GCS。这应该是未压缩的CSV,JSON,Avro或其他支持文件格式,最大单个文件大小为5TB。您最多可以上传15TB的加载作业,这意味着最多可以上传三个5兆兆位文件。
Google云端存储支持一个漂亮的功能,称为“ compose”:它可以让您最多由32个源Blob组成Blob。您可以从命令行执行以下操作:
gsutil compose \
gs://${BUCKET}/somedir/csv/train* \
gs://${BUCKET}/somedir/csv/full_training_data.csv
请注意,现在只能使用32个文件,因此,如果要从那15k文件中创建更大但更少的文件,则需要进行迭代。
请注意,每个表每天有1000个加载作业限制,您可以创建多个表然后合并它们。每个项目还有50k个加载作业限制。
每个作业操作(查询或加载)最多可影响2,000个分区。分区表每天最多只能进行5,000个分区修改。更多限制here。