第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問(wèn)題,去搜搜看,總會(huì)有你想問(wèn)的

使用 python 將 S3 gzip 源對(duì)象流式解壓縮到 S3 目標(biāo)對(duì)象?

使用 python 將 S3 gzip 源對(duì)象流式解壓縮到 S3 目標(biāo)對(duì)象?

弒天下 2023-12-09 15:59:49
給定 S3 中的一個(gè)大gzip對(duì)象,python3/boto3 中的內(nèi)存高效(例如流式傳輸)方法是什么來(lái)解壓縮數(shù)據(jù)并將結(jié)果存儲(chǔ)回另一個(gè) S3 對(duì)象?之前也有人問(wèn)過(guò)類(lèi)似的問(wèn)題。然而,所有答案都使用一種方法,其中首先將 gzip 文件的內(nèi)容讀入內(nèi)存(例如ByteIO)。這些解決方案對(duì)于太大而無(wú)法放入主內(nèi)存的對(duì)象來(lái)說(shuō)是不可行的。對(duì)于大型 S3 對(duì)象,需要讀取內(nèi)容,“即時(shí)”解壓縮,然后以某種分塊方式寫(xiě)入不同的 S3 對(duì)象。預(yù)先感謝您的考慮和回復(fù)。
查看完整描述

1 回答

?
躍然一笑

TA貢獻(xiàn)1826條經(jīng)驗(yàn) 獲得超6個(gè)贊

您可以將流方法與boto / s3一起使用,但您必須定義自己的類(lèi)文件對(duì)象 AFAIK。
幸運(yùn)的是,有smart_open可以幫你處理這個(gè)問(wèn)題;它還支持GCS、Azure、HDFS、SFTP等。以下是使用大量銷(xiāo)售數(shù)據(jù)樣本
的 示例:

import boto3

from smart_open import open


session = boto3.Session()? # you need to set auth credentials here if you don't have them set in your environment

chunk_size = 1024 * 1024? # 1 MB

f_in = open("s3://mybucket/2m_sales_records.csv.gz", transport_params=dict(session=session), encoding="utf-8")

f_out = open("s3://mybucket/2m_sales_records.csv", "w", transport_params=dict(session=session))

byte_count = 0

while True:

? ? data = f_in.read(chunk_size)

? ? if not data:

? ? ? ? break

? ? f_out.write(data)

? ? byte_count += len(data)

? ? print(f"wrote {byte_count} bytes so far")

f_in.close()

f_out.close()

示例文件有200 萬(wàn)行,壓縮后為75 MB,未壓縮為238 MB。

我將壓縮文件上傳到mybucket并運(yùn)行下載該文件的代碼,提取內(nèi)存中的內(nèi)容并將未壓縮的數(shù)據(jù)上傳回 S3。

在我的計(jì)算機(jī)上,該過(guò)程大約需要78 秒(高度依賴(lài)于互聯(lián)網(wǎng)連接速度),并且從未使用超過(guò)95 MB的內(nèi)存;我認(rèn)為如果需要的話,您可以通過(guò)覆蓋smart_open中 S3 分段上傳的部分大小來(lái)降低內(nèi)存要求。


DEFAULT_MIN_PART_SIZE = 50 * 1024**2

"""Default minimum part size for S3 multipart uploads"""

MIN_MIN_PART_SIZE = 5 * 1024 ** 2

"""The absolute minimum permitted by Amazon."""


查看完整回答
反對(duì) 回復(fù) 2023-12-09
  • 1 回答
  • 0 關(guān)注
  • 194 瀏覽
慕課專(zhuān)欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)