说我有一个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的新文件,其中包含相同的冗余数据。
答案 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