使用pyarrow读取aws s3中的已分区数据集不会添加分区列

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

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

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

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

除分区列代码在数据帧df中不存在外,所有其他操作均有效。 我也尝试使用file_list插入MyDirectory的一个路径来尝试它,但是发现一个错误 “在中间目录中找到文件:s3:// bucket / Mydirectoty”,我在网上找不到任何答案。

谢谢!

gongshaobo 回答:使用pyarrow读取aws s3中的已分区数据集不会添加分区列

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)
,

如果您对其他工具感到满意,可以尝试dask。假设您要读取的所有数据都在s3://folder中,您就可以使用

import dask.dataframe as dd
storage_options = {
            'key': your_key,'secret': your_secret}
df = dd.read_parquet("s3://folder",storage_options=storage_options)
本文链接:https://www.f2er.com/2809841.html

大家都在问