Я пытаюсь выяснить, какой самый быстрый способ записать БОЛЬШОЙ pandas DataFrame в файловую систему S3. В настоящее время я пытаюсь двумя способами:
1) Через сжатие gzip (BytesIO) и boto3
gz_buffer = BytesIO()
with gzip.GzipFile(mode='w', fileobj=gz_buffer) as gz_file:
df.to_csv(TextIOWrapper(gz_file, 'utf8'), index=False)
s3_resource = boto3.resource('s3')
s3_object = s3_resource.Object(bucket, s3_path + name_zip)
s3_object.put(Body=gz_buffer.getvalue())
, что для кадра данных из 7M строк занимает около 420 секунд для записи в S3.
2) Через запись в CSV-файл без сжатия (буфер StringIO)
csv_buffer = StringIO()
data.to_csv(csv_buffer)
s3_resource = boto3.resource('s3')
s3_resource.Object(bucket, s3_path + name_csv).put(Body=csv_buffer.getvalue())
, что занимает около 371 секунды ...
Вопрос:
Есть ли еще какой-нибудь более быстрый способ записи кадра данных панды в S3?