You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用DuckDB-Python API将Dataframe写入S3存储桶为Parquet文件

将DuckDB Dataframe写入S3 Parquet文件的Python实现

前置准备

确保安装最新版DuckDB:

pip install duckdb

DuckDB v0.7及以上版本内置S3扩展,无需额外安装。

核心代码示例

import duckdb

# 建立内存连接
con = duckdb.connect()

# 加载S3扩展
con.execute("INSTALL s3;")
con.execute("LOAD s3;")

# 配置S3访问信息(可选,若已通过环境变量/实例角色授权可省略)
con.execute("SET s3_access_key_id='你的Access Key';")
con.execute("SET s3_secret_access_key='你的Secret Key';")
con.execute("SET s3_region='你的存储桶区域,如us-east-1';")

# 若你的Dataframe是Pandas对象,先注册为DuckDB表
# con.register('target_df', your_pandas_dataframe)

# 写入S3 Parquet文件,针对5GB数据优化参数
con.execute("""
    COPY target_df TO 's3://你的存储桶名/目标路径/output.parquet'
    (FORMAT PARQUET, COMPRESSION ZSTD, ROW_GROUP_SIZE 1000000)
""")

# 关闭连接
con.close()

关键参数说明

  • COMPRESSION:推荐用ZSTD,兼顾压缩率和读写性能,也可选择SNAPPY(更快)或GZIP(压缩率更高)。
  • ROW_GROUP_SIZE:控制Parquet行组大小,100万行左右的设置适合5GB数据,避免单一行组过大导致内存压力。
  • 分区写入:若需按字段分区存储,可添加PARTITION BY 分区字段名,生成按分区划分的目录结构,便于后续高效查询。

授权方式补充

  • 若运行环境是AWS EC2/EKS等已绑定IAM角色的资源,无需手动配置密钥,DuckDB会自动获取角色权限。
  • 也可通过设置环境变量AWS_ACCESS_KEY_ID、AWS_SECRET_ACCESS_KEY、AWS_DEFAULT_REGION来完成授权,代码中无需重复设置。

内容的提问来源于stack exchange,提问作者Sandeep540

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.12 02:42:35