Bigquery к Авро
В настоящее время я запускаю SQL-запрос для извлечения данных из набора данных Public BigQuery в таблицу, откуда я могу легко использовать функцию экспорта для генерации файла Avro и сохранения его в GCS. Как сгенерировать этот файл программно? Я использовал BQ API для чтения таблицы в Pandas Dataframe, является ли лучшим вариантом для чтения в Pandas DF и затем экспортировать его в Avro? Или это лучший способ сделать это.
1 ответ
Решение
Почему вы не экспортируете в Avro напрямую? Это сделает экспорт таблицы в Avro в GCS.
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()
Я видел, что есть также возможность указать сжатие (недоступно при экспорте из пользовательского интерфейса) что-то вроде job_config.compression = bigquery.Compression.SNAPPY
Надеюсь, это поможет.