0

我目前运行 SQL 查询以将公共 BigQuery 数据集中的数据提取到表中,从那里我可以轻松地使用导出函数生成 Avro 文件并将其保存到 GCS 中。如何以编程方式生成此文件?我使用 BQ API 将表格读入 Pandas Dataframe,是读取 Pandas DF 然后将其导出到 Avro 的最佳选择吗?或者是更好的方法。

4

1 回答 1

2

为什么不直接导出到 Avro?这将在 GCS 存储桶中将表导出到 Avro。

from google.cloud import bigquery 

client = bigquery.Client()
project = project
dataset_id = 'cdc'
table_id = 'project_tycho_reports'
bucket_name ='bucketname'

destination_uri = 'gs://{}/{}'.format(bucket_name, 'fileName')
dataset_ref = client.dataset(dataset_id, project=project)
table_ref = dataset_ref.table(table_id)

job_config = bigquery.job.ExtractJobConfig()
job_config.destination_format = bigquery.DestinationFormat.AVRO

extract_job = client.extract_table(
        table_ref,
        destination_uri,
        job_config=job_config,
        location="EU",
        )  
extract_job.result()  

我看到还可以指定压缩(从 UI 导出时不可用),例如 job_config.compression = bigquery.Compression.SNAPPY 希望它有所帮助。

于 2019-06-06T11:51:00.657 回答