首页 > 解决方案 > 使用 pyarrow 在 aws s3 中读取分区数据集不会添加分区列

问题描述

我正在尝试在 aws s3 中读取分区数据集,它看起来像:

MyDirectory--code=1--file.parquet
           --code=2--another.parquet
           --code=3--another.parquet

我创建了一个文件列表,其中包含目录中所有文件的路径,然后执行

df = pq.ParquetDataset(file_list, filesystem=fs).read().to_pandas()

除了数据框df中不存在分区列代码外,一切正常。我也尝试了使用文件列表的 MyDirectory 的一个路径,但发现错误“在中间目录中找到文件:s3://bucket/Mydirectoty”,我在网上找不到任何答案。

谢谢!

标签: pandasamazon-s3parquetpyarrow

解决方案


AWS 有一个项目 ( AWS Data Wrangler ) 帮助集成 Pandas/PyArrow 及其服务。

这个片段应该工作:

import awswrangler as wr

# Write
wr.s3.to_parquet(
    df=df,
    path="s3://...",
    mode="overwrite",
    dataset=True,
    database="my_databse",  # Optional, only if you want it available on Athena/Glue Catalog
    table="my_table",
    partition_cols=["PARTITION_COL_NAME"])

# READ
df = wr.s3.read_parquet(path="s3://...", dataset=True)

推荐阅读