AWS Wrangler 是一款适用于 AWS 的开源 Python 库。在使用 AWS Wrangler 操作 Pandas 读取 SQL 数据并存储到 S3 中时,若数据量较大,会出现内存不足的情况,造成程序崩溃。为了解决这个问题,我们可以采用以下方法:
可以使用 Pandas 分块读取 SQL 数据的功能,将大数据集分块读取,降低内存占用率。示例代码如下:
import awswrangler as wr
import pandas as pd
# 设置分块读取的大小
chunk_size = 10000
# 创建一个 SQL 读取器
sql_reader = pd.read_sql("SELECT * FROM my_table", engine, chunksize=chunk_size)
# 逐块读取数据,然后写入 S3
for i, chunk in enumerate(sql_reader):
# 处理 chunk
# ...
# 将 chunk 存储到 S3
wr.s3.to_csv(chunk, f's3://bucket/path/to/my_table_{i}.csv')
可以直接将 SQL 数据以 CSV 格式写入 S3,这样既可以避免内存不足的问题,又可以提高程序运行的效率。示例代码如下:
import awswrangler as wr
# 从 SQL 读取数据,然后保存到 S3
wr.db.to_csv(
sql="SELECT * FROM my_table",
con=engine,
path="s3://bucket/path/to/my_table.csv",
)
通过以上两种方法,我们可以在有限内存环境下,依然轻松使用 AWS Wrangler 将 Pandas 读取的 SQL 数据存储到 S3 中。