Bigquery 到 Avro

Bigquery to Avro

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

你为什么不直接export to Avro? 这将 table 导出到 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()  

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