我怎样使用pyarrow将自定义元数据存储到ParquetDataset中呢?
例如,如果我使用Dask创建一个Parquet数据集。
import dask
dask.datasets.timeseries().to_parquet('temp.parq')
我可以使用pyarrow读取它
import pyarrow.parquet as pq
dataset = pq.ParquetDataset('temp.parq')
然而,我想要使用的书写单个Parquet文件元数据的方法(在如何使用pyarrow编写Parquet元数据?中概述)并不适用于ParquetDataset
,因为没有replace_schema_metadata
函数或类似函数。
我认为我可能想要编写一个自定义的_custom_metadata
文件,因为我想存储整个数据集的元数据。我认为该过程与以下过程类似:
meta = pq.read_metadata('temp.parq/_common_metadata')
custom_metadata = { b'type': b'mydataset' }
merged_metadata = { **custom_metadata, **meta.metadata }
# TODO: Construct FileMetaData object with merged_metadata
new_meta.write_metadata_file('temp.parq/_common_metadata')
dataset.schema.to_arrow_schema()
),并将其传递给pq.write_metadata
。在Arrow模式中设置的任何元数据都将保留在Parquet FileMetaData中。 - joris