我正在尝试使用
pyarrow
分区并写入 parquet
文件
!pip install pyarrow==13.0.0
import pyarrow as pa
table = pa.table({'year': [2020, 2022, 2021, 2022, 2019, 2021],
'n_legs': [2, 2, 4, 4, 5, 100],
'animal': ["Flamingo", "Parrot", "Dog", "Horse",
"Brittle stars", "Centipede"]})
import pyarrow.parquet as pq
pq.write_to_dataset(table, root_path='dataset_name_3',
partition_cols=['year'])
p_files = pq.ParquetDataset('dataset_name_3', use_legacy_dataset=False).files
import pandas as pd
pd.read_parquet(path=p_files[0])
操作:
n_legs animal
0 5 Brittle stars
如OP所示,读完
partition_files
后,Op中只有2列 - n_legs
和animal
。我用 year
创建分区的列被删除。
有什么建议可以解决这个问题吗?
您将表保存为分区数据集,但读取单个 parquet 文件。单个 parquet 文件只是数据集的一部分,因此不包含所有数据。但数据仍然存在,作为分区目录的名称:
ls dataset_name_3
'year=2019' 'year=2020' 'year=2021' 'year=2022'
如果您按预期使用该函数,而不仅仅是获取文件名,数据就在那里:
>>> ds = pq.ParquetDataset('dataset_name_3')
>>> ds.read().to_pandas()
n_legs animal year
0 5 Brittle stars 2019
1 2 Flamingo 2020
2 4 Dog 2021
3 100 Centipede 2021
4 2 Parrot 2022
5 4 Horse 2022
有关详细信息和示例,请参阅 ParquetDataset 或更通用的 dataset 的文档。