Считается ли повторение файла в S3 с использованием StreamingBody.iter_lines () в boto3 как GET-запрос для каждой строки? - PullRequest
0 голосов
/ 27 февраля 2020

Я работаю над тем, что я пытаюсь получить доступ к некоторым данным, хранящимся в большом 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.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...