google-bigquery - 谷歌云存储加入多个csv文件

标签 google-bigquery google-cloud-storage

鉴于 BigQuery 将文件导出为 99 个 csv 文件的文件大小,我将数据集从 Google BigQuery 导出到 Google Cloud Storage。

但是现在我想连接到我的 GCP Bucket 并使用 Spark 执行一些分析,但我需要将所有 99 个文件加入一个大的 csv 文件来运行我的分析。

如何做到这一点?

最佳答案

如果是 larger than 1GB,BigQuery 会将导出的数据拆分成多个文件.但是您可以将这些文件与 gsutil tool 合并。 , 检查 this official documentation了解如何使用 gsutil 执行对象组合。

当 BigQuery 导出具有相同前缀的文件时,您可以使用通配符 *将它们合并为一个复合对象:
gsutil compose gs://example-bucket/component-obj-* gs://example-bucket/composite-object
请注意,单个操作中可以组合的组件数量是有限制的(目前为 32 个)。

此选项的缺点是每个 .csv 的标题行文件将被添加到复合对象中。但是您可以通过修改 jobConfig 来避免这种情况。设置 print_header parameterFalse .

这是一个 Python 示例代码,但您可以使用 any other BigQuery Client library :

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))

最后记得编一个空的.csv只有标题行。

关于google-bigquery - 谷歌云存储加入多个csv文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55114393/

相关文章:

python - 读取 appengine backup_info 文件给出 EOFError

google-cloud-platform - 谷歌默认服务帐户没有 bq 实用程序的权限

Firebase Analytics 空用户 ID

javascript - 如何根据 onUpdate 事件更新 bigquery 中的数据

arrays - 生成日期时间范围

安卓 : Get the list of images to download added in the separate folder of Firebase console from a FireBase Storage API

java - 使用独立的本地 spark java 程序读取 GCS 文件

python - Google 云存储 <-> Google App Engine -> Google BigQuery

node.js - 谷歌云 - 有谁知道如何将 Node js应用程序部署到 Node js实例

file - 谷歌云存储搜索文件