You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将400GB BigQuery表按1GB/文件导出至GCS?

BigQuery导出指定数量文件的实现方案

要将400GB的BigQuery表导出为400个大小均匀的文件(目标约1GB/个),只需在导出配置中添加destinationUriFileCounts参数指定文件数量,BigQuery会自动按该数量分片数据,生成符合预期的文件。

修改后的完整代码如下:

bigquery_request = bigquery_service.jobs()

# 替换为你的实际配置参数
DATASET_NAME = "#######"
PROJECT_ID = '#####'
DATASET_ID = 'DestinationTables'
TABLE_ID = '#######'  # 补充你的目标表ID
DESTINATION_PATH = 'gs://bucketname/foldername/'
FILE_PREFIX = 'my-files'

query_data = {
    'projectId': PROJECT_ID,
    'configuration': {
        'extract': {
            'sourceTable': {
                'projectId': PROJECT_ID,
                'datasetId': DATASET_ID,
                'tableId': TABLE_ID,
            },
            'destinationUris': [f"{DESTINATION_PATH}{FILE_PREFIX}-*.gz"],
            'destinationFormat': 'CSV',
            'printHeader': 'false',
            'compression': 'GZIP',
            # 指定生成400个文件,BigQuery自动分片数据
            'destinationUriFileCounts': 400
        }
    }
}

# 执行导出任务
query_response = bigquery_request.insert(
    projectId=PROJECT_ID,
    body=query_data
).execute()

关键说明:

  • destinationUriFileCounts:该参数直接控制导出文件的数量,BigQuery会尽可能让每个文件大小接近总数据量除以文件数。如果你的400GB是未压缩表大小,GZIP压缩后会根据数据类型有不同压缩比(通常5:1~10:1),若要压缩后每个文件1GB,可根据实际压缩比调整参数值(比如压缩比5:1时,总压缩数据约80GB,设置destinationUriFileCounts=80即可)。
  • 文件名规则:destinationUris中的*会被替换为12位序号,最终生成如my-files-000000000000.gz到my-files-000000000399.gz的400个文件。
  • 权限检查:确保BigQuery服务账号拥有目标GCS bucket的写入权限,否则导出任务会失败。

内容的提问来源于stack exchange,提问作者buchiki

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.05 11:34:57