使用pyarrow.parquet编写数据集时,是否可以覆盖文件名的uuid自动分配?

时间:2018-10-16 21:52:53

标签: io parquet pyarrow

说我有一个pandas DataFrame df,我想使用pyarrow木地板将其作为数据集存储在磁盘上,我可以这样做:
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的新文件,其中包含相同的冗余数据。

1 个答案:

答案 0 :(得分:1)

对于任何对这个问题的开发感兴趣的人,都可以从pyarrow版本0.15.0开始解决该问题,这要归功于开源社区(Jira问题Triggering from Cloud Pub/Sub)。

以下问题中使用的示例:

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