MongoDB
 sql >> база данни >  >> NoSQL >> MongoDB

Оптимизиране на Airflow задача, която прехвърля данни от BigQuery в MongoDB

Краткият отговор е, че асинхронните операции замъгляват вашето профилиране.

Документите на bq.query посочва, че полученият google.cloud.bigquery.job.QueryJob обектът е асинхронен заявка работа. Това означава, че след подаване на заявката интерпретаторът на Python не блокира, докато не опитате да използвате резултатите от заявката с един от синхронните QueryJob методи, to_dataframe() . Значителна част от 87-те секунди, които виждате, вероятно просто са прекарани в чакане заявката да се върне.

Можете да изчакате заявката да приключи, като извикате QueryJob.done итеративно, докато върне true, след това извикайте вашия 2-ри профилиращ израз за печат.

Това не е съвсем оптимизация на вашия код, но се надяваме, че помага да се движите в правилната посока. Възможно е някаква настройка на pandas turntrip да помогне, но мисля, че е вероятно по-голямата част от времето ви да прекарвате в чакане за четене/запис от вашите бази данни и писането на по-ефективно или по-голям брой по-малки заявки ще бъде вашето единствената опция за съкращаване на общото време.




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. .insertOne не е функция

  2. Намерете записи на MongoDB, където полето на масива не е празно

  3. MongoDB - премахва нецифровите знаци в полето

  4. По-добър модел за филтриране на колекции

  5. премахнете _id от резултата от mongo