3

假设我有一个 pandas DataFrame df,我想使用 pyarrow parquet 作为数据集存储在磁盘上,我会这样做:
table = pyarrow.Table.from_pandas(df) pyarrow.parquet.write_to_dataset(table, root_path=some_path, partition_cols=['a',]) 在磁盘上,数据集看起来像这样:
some_path
├── a=1
____├── 4498704937d84fe5abebb3f06515ab2d.parquet
├── a=2
____├── 8bcfaed8986c4bdba587aaaee532370c.parquet

问:我是否可以在数据集写入期间以某种方式覆盖长 UUID 作为文件名的自动分配?我的目的是当我有一个新版本的df. 目前,如果我尝试再次写入数据集,另一个新的唯一命名的 [UUID].parquet 文件将放置在旧文件旁边,其中包含相同的冗余数据。

4

1 回答 1

5

对于任何对此问题的开发也感兴趣的人,它pyarrow已从 0.15.0 版本开始解决,非常感谢开源社区(Jira 问题链接)。

按照问题中使用的示例:

pyarrow.parquet.write_to_dataset(table, 
                                 some_path, 
                                 ['a',],
                                 partition_filename_cb=lambda x:'-'.join(x)+'.parquet')                     

会产生一个这样的保存数据集:

├── a=1
    ├── 1.parquet
├── a=2
    ├── 2.parquet
于 2019-10-21T23:33:34.033 回答