MongoDB
 sql >> Base de Dados >  >> NoSQL >> MongoDB

Otimizando a tarefa do Airflow que transfere dados do BigQuery para o MongoDB


A resposta curta é que as operações assíncronas estão atrapalhando sua criação de perfil.

Os documentos em bq.query declarar que o google.cloud.bigquery.job.QueryJob objeto é um assíncrono trabalho de consulta. Isso significa que, após o envio da consulta, o interpretador python não bloqueia até que você tente usar os resultados da consulta com um dos QueryJob síncrono métodos, to_dataframe() . Uma parcela significativa dos 87 segundos que você está vendo provavelmente é gasta apenas esperando o retorno da consulta.

Você pode esperar que a consulta seja concluída chamando QueryJob.done iterativamente até retornar true e, em seguida, chame sua segunda instrução de impressão de criação de perfil.

Isso não é exatamente uma otimização do seu código, mas espero que ajude a se mover na direção certa. É possível que algum ajuste da viagem de ida e volta dos pandas possa ajudar, mas acho que é provável que a maior parte do seu tempo esteja sendo gasto aguardando leitura/gravação de seus bancos de dados, e que escrever de forma mais eficiente ou um número maior de consultas menores será o seu única opção para reduzir o tempo total.