sql >> Base de Datos >  >> NoSQL >> MongoDB

Optimización de Airflow Task que transfiere datos de BigQuery a MongoDB

La respuesta corta es que las operaciones asincrónicas están enturbiando su creación de perfiles.

Los documentos en bq.query indique que el resultado google.cloud.bigquery.job.QueryJob el objeto es un asincrónico trabajo de consulta. Esto significa que, después de enviar la consulta, el intérprete de python no se bloquea hasta que intenta usar los resultados de la consulta con uno de los QueryJob sincrónicos. métodos, to_dataframe() . Es probable que una parte significativa de los 87 segundos que está viendo se dedique a esperar que regrese la consulta.

Puede esperar a que se complete la consulta llamando a QueryJob.done de forma iterativa hasta que devuelva verdadero, luego llame a su segunda declaración de impresión de perfiles.

Esto no es exactamente una optimización de su código, pero con suerte ayuda a moverse en la dirección correcta. Es posible que algún ajuste del viaje de ida y vuelta de los pandas pueda ayudar, pero creo que es probable que la mayor parte de su tiempo lo dedique a esperar la lectura/escritura de sus bases de datos, y que escribir de manera más eficiente o una mayor cantidad de consultas más pequeñas va a ser su única opción para reducir el tiempo total.