Я работаю над тем, что я пытаюсь получить доступ к некоторым данным, хранящимся в большом CSV-файле в S3 через boto3. Я рассматриваю возможность итерации данных построчно ради памяти, используя:
s3_client = boto3.client("s3")
iterator = s3_client.get_object(Bucket='my-bucket', Key='my-key')['Body'].iter_lines()
for line in iterator:
foo(line)
Это работает с игрушечными данными, с которыми я тестировал, но полный набор данных составляет более 70 миллионов строк. Мой вопрос заключается в том, что использование этого метода для перебора данных фактически отправит 70 миллионов отдельных запросов (и будет стоить AWS за 70 миллионов раз больше, чем я должен был прочитать весь файл сразу)? Или он учитывает один запрос?
Я не очень хорошо понимаю механизм, используемый boto3 для доступа к данным в классе StreamingBody, и мне было трудно найти информацию о нем, в том числе в документация boto3.