Exportar registros do armazenamento de dados NDB para o arquivo CSV do Cloud Storage

No meu NDB Datastore, tenho mais de 2 milhões de registros. Quero exportar esses registros agrupados porcreated_at data em arquivos CSV no Google Cloud Storage. Calculei que todos os arquivos teriam cerca de 1 GB.

2014-03-18.csv, ~17000 records, ~1GB
2014-03-17.csv, ~17000 records, ~1GB
2014-03-18.csv, ~17000 records, ~1GB
...

Minha primeira abordagem (pseudo-código):

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)

Mas isso (obviamente?) Leva a problemas de memória:

Error: Exceeded soft private memory limit with 622.16 MB after servicing 2 requests total

Em vez disso, devo usar um pipeline do MapReduce ou existe alguma maneira de fazer a abordagem 1 funcionar? Se estiver usando o MapReduce: posso filtrar porcreated_at sem iterar sobre todos os registros no NDB?

questionAnswers(3)

yourAnswerToTheQuestion