Мне нужно запросить таблицу Google BigQuery и экспортировать результаты в файл GZIP.Это мой текущий код.Требование состоит в том, что данные каждой строки должны быть удалены (\ n) с новой строки.
def batch_job_handler(args):
credentials = Credentials.from_service_account_info(service_account_info)
client = Client(project=service_account_info.get("project_id"),
credentials=credentials)
query_job = client.query(QUERY_STRING)
results = query_job.result() # Result's total_rows is 1300000 records
with gzip.open("data/query_result.json.gz", "wb") as file:
data = ""
for res in results:
data += json.dumps(dict(list(res.items()))) + "\n"
break
file.write(bytes(data, encoding="utf-8"))
Приведенное выше решение прекрасно работает для небольшого числа результатов, но становится слишком медленным, если в результате имеется 1300000 записей.
Это из-за этой строки: json.dumps(dict(list(res.items()))) + "\n"
, поскольку я строю огромную строку, объединяя каждую запись новой строкой.
Поскольку я запускаю эту программу в пакете AWS, она отнимает слишком много времени.Мне нужна помощь для перебора результатов и более быстрой записи в файл для миллионов записей.