Экспорт записей хранилища данных NDB в файл CSV Cloud Storage
В моем хранилище данных NDB у меня более 2 миллионов записей. Я хочу экспортировать эти записи, сгруппированные поcreated_at
дата в файлах CSV на Google Cloud Storage. Я рассчитал, что каждый файл будет около 1 ГБ.
2014-03-18.csv, ~17000 records, ~1GB
2014-03-17.csv, ~17000 records, ~1GB
2014-03-18.csv, ~17000 records, ~1GB
...
Мой первый подход (псевдокод):
import cloudstorage as gcs
gcs_file = gcs.open(date + '.csv', 'w')
query = Item.query().filter(Item.created_at >= date).filter(Item.created_at < date+1day)
records = query.fetch_page(50, cursor)
for record in records:
gcs_file.write(record)
Но это (очевидно?) Приводит к проблемам с памятью:
Error: Exceeded soft private memory limit with 622.16 MB after servicing 2 requests total
Должен ли я использовать MapReduce Pipeline вместо этого или есть ли способ заставить подход 1 работать? При использовании MapReduce: могу ли я отфильтроватьcreated_at
без перебора всех записей в NDB?