如何解决如何从AWS Lambda的内存中的Azure存储中读取大型gzip csv文件?
我正在尝试通过将其加载到AWS Lambda函数中的pandas数据帧中,从azure存储blob转换大型gzip csv文件(> 3 Gigs)。
具有16个演出的本地计算机能够处理我的文件,但在AWS Lambda中执行时会给出内存错误“ errorType”:“ MemoryError” ,因为lambda的最大内存为3 Gb。 / p>
是否可以通过aws lambda读取和处理内存中的大数据。只需提一下,我也尝试了流方式,但是没有运气。
下面是我的示例代码-
from azure.storage.blob import *
import pandas as pd
import gzip
blob = BlobClient(account_url="https://" + SOURCE_ACCOUNT + ".blob.core.windows.net",container_name=SOURCE_CONTAINER,blob_name=blob_name,credential=SOURCE_ACCT_KEY)
data = blob.download_blob()
data = data.readall()
unzipped_bytes = gzip.decompress(data)
unzipped_str = unzipped_bytes.decode("utf-8")
df = pd.read_csv(StringIO(unzipped_str),usecols=req_columns,low_memory=False)
解决方法
尝试使用块并一次以n行读取数据:
for chunk in pd.read_csv("large.csv",chunksize=10_000):
print(chunk)
尽管我不确定压缩文件。在最坏的情况下,您可以解压缩数据,然后按块读取。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。