Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/amazon-s3/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Pandas 使用pyarrow读取aws s3中的分区数据集不会';不添加分区列_Pandas_Amazon S3_Parquet_Pyarrow - Fatal编程技术网

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

Pandas 使用pyarrow读取aws s3中的分区数据集不会';不添加分区列,pandas,amazon-s3,parquet,pyarrow,Pandas,Amazon S3,Parquet,Pyarrow,我正在尝试读取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中不存在分区

我正在尝试读取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”,我在网上找不到任何答案

谢谢大家!

AWS有一个项目()帮助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://文件夹中
,您可以直接使用

导入dask.dataframe作为dd
存储单元选项={
“键”:您的_键,
“秘密”:你的秘密}
df=dd.read_拼花地板(“s3://文件夹”,
存储选项=存储选项)

我测试了byt dd.read\u parquet读取单个拼花文件,无法读取分区数据集,