我尝试使用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()