act*_*ner 5 google-cloud-storage google-bigquery
我目前正在将数据从 Bigquery 导出到 GCS 存储桶。我使用以下查询以编程方式执行此操作:
query_request = bigquery_service.jobs()
DATASET_NAME = "#######";
PROJECT_ID = '#####';
DATASET_ID = 'DestinationTables';
DESTINATION_PATH = 'gs://bucketname/foldername/'
query_data = {
'projectId': '#####',
'configuration': {
'extract': {
'sourceTable': {
'projectId': PROJECT_ID,
'datasetId': DATASET_ID,
'tableId': #####,
},
'destinationUris': [DESTINATION_PATH + my-files +'-*.gz'],
'destinationFormat': 'CSV',
'printHeader': 'false',
'compression': 'GZIP'
}
}
Run Code Online (Sandbox Code Playgroud)
}
query_response = query_request.insert(projectId=constants.PROJECT_NUMBER,
body=query_data).execute()
Run Code Online (Sandbox Code Playgroud)
由于存在每个文件只能导出到 GCS 1GB 的限制,因此我使用了单个通配符 URI ( https://cloud.google.com/bigquery/exporting-data-from-bigquery#exportingmultiple )。这会将文件分割成多个较小的部分。分割后,每个文件部分也会被 gzip 压缩。
我的问题:我可以控制分割文件的文件大小吗?例如,如果我有一个 14GB 的文件要导出到 GCS,则该文件将被拆分为 14 个 1GB 的文件。但是有没有办法将 1GB 更改为另一个大小(小于 gzip 压缩之前的 1GB)?我检查了可用于修改configuration.extract对象的各种参数?(参考:https://cloud.google.com/bigquery/docs/reference/v2/jobs#configuration.extract)
如果指定多个 URI 模式,数据将在它们之间分片。因此,如果您使用 28 个 URI 模式,每个分片将约为半 GB。对于每个模式,您最终都会得到大小为零的第二个文件,因为这实际上是针对 MR 作业的,但它是完成您想要的任务的一种方法。
更多信息请参见此处(请参阅多个通配符 URI 部分):从 BigQuery 导出数据
| 归档时间: |
|
| 查看次数: |
14423 次 |
| 最近记录: |