EGM*_*686 4 google-cloud-storage google-bigquery
考虑到BigQuery导出的文件大小为99个csv文件,我将数据集从Google BigQuery导出到Google Cloud Storage。
但是,现在我想连接到我的GCP存储桶并使用Spark执行一些分析,但是我需要将所有99个文件加入一个大的csv文件中以运行分析。
如何做到这一点?
如果BigQuery导出的数据大于1GB,则会将其拆分为多个文件。但是您可以将这些文件与gsutil工具合并,查看此官方文档以了解如何使用gsutil执行对象组合。
当BigQuery导出具有相同前缀的文件时,您可以使用通配符*将它们合并为一个复合对象:
gsutil compose gs://example-bucket/component-obj-* gs://example-bucket/composite-object
请注意,单个操作中可以组成的组件数有一个限制(当前为32个)。
此选项的缺点是每个.csv文件的标题行都将添加到复合对象中。但是你可以通过modifiyng的避免这种情况jobConfig,设置print_header参数来False。
这是Python示例代码,但您可以使用任何其他BigQuery Client库:
from google.cloud import bigquery
client = bigquery.Client()
bucket_name = 'yourBucket'
project = 'bigquery-public-data'
dataset_id = 'libraries_io'
table_id = 'dependencies'
destination_uri = 'gs://{}/{}'.format(bucket_name, 'file-*.csv')
dataset_ref = client.dataset(dataset_id, project=project)
table_ref = dataset_ref.table(table_id)
job_config = bigquery.job.ExtractJobConfig(print_header=False)
extract_job = client.extract_table(
table_ref,
destination_uri,
# Location must match that of the source table.
location='US',
job_config=job_config) # API request
extract_job.result() # Waits for job to complete.
print('Exported {}:{}.{} to {}'.format(
project, dataset_id, table_id, destination_uri))
Run Code Online (Sandbox Code Playgroud)
最后,请记住.csv只用标题行组成一个空白。
| 归档时间: |
|
| 查看次数: |
690 次 |
| 最近记录: |