Polars - Glob从S3读取Parquet只读取第一个文件



我尝试使用polar从S3读取一些Parquet文件。

这些文件由Redshift使用UNLOAD和PARALLEL ON生成。

4个文件分别为:0000_part_00.parquet,0001_part_00.parquet,0002_part_00.parquet,0003_part_00.parquet

当我使用:pl.read_parquet("s3://my_bucket/my_folder/*.parquet")时,它只返回第一个文件(0000_part_00.parquet)的结果->340行。

奇怪的是,在本地运行相同的命令:pl.read_parquet("*.parquet"),将返回所有的行->1239行。

这是正常行为还是我遗漏了什么?

这是正常行为还是我在这里错过了什么?

这是正常的你错过了一些东西

From the docs:

参数

源文件或类文件对象的路径。如果路径是目录,则目录将用作分区感知扫描。如果安装了fsspec,它将用于打开远程文件。

在本地系统的情况下,它将其标识为目录并使用分区感知扫描。对于访问s3,它使用fsspec,并且不能真正识别路径中的*

而不是做的事:

import pyarrow.dataset as ds
import fsspec #or whatever the s3 wrapper is called
s3fs=fsspec.filesystem('s3', connection_string="xxxx")
myds=ds.dataset("s3://my_bucket/my_folder/", filesystem=s3fs)
df = pl.scan_pyarrow_dataset(myds).collect()

最新更新