我正在尝试执行类似this的操作,将S3存储桶中的文件列表读取到pyarrow表中。
如果我指定文件名,我可以做:
from pyarrow.parquet import ParquetDataset
import s3fs
dataset = ParquetDataset(
"s3://path/to/file/myfile.snappy.parquet,
filesystem=s3fs.S3FileSystem(),
)
并且一切正常。但是,如果我这样做:
dataset = ParquetDataset(
"s3://path/to/file,
filesystem=s3fs.S3FileSystem(),
)
我得到:
pyarrow/_parquet.pyx:1036: in pyarrow._parquet.ParquetReader.open
pyarrow.lib.ArrowIOError: Invalid Parquet file size is 0 bytes
我认为答案与Apache Arrow docs中的问题有关:
ParquetDataset类接受目录名称或列表或文件路径,并且可以发现和推断一些常见的分区结构,例如由Hive产生的分区结构:
dataset = pq.ParquetDataset('dataset_name/') table = dataset.read()
因此,我认为只有在您试图保留文件的位置被例如蜂巢。