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

ji.*_*.xu 3 io parquet pyarrow

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

\n\n

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

\n

ji.*_*.xu 5

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

\n\n

按照问题中使用的示例:

\n\n
pyarrow.parquet.write_to_dataset(table, \n                                 some_path, \n                                 [\'a\',],\n                                 partition_filename_cb=lambda x:\'-\'.join(x)+\'.parquet\')                     \n
Run Code Online (Sandbox Code Playgroud)\n\n

将生成一个保存的数据集,如下所示:

\n\n
\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 a=1\n    \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 1.parquet\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 a=2\n    \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 2.parquet\n
Run Code Online (Sandbox Code Playgroud)\n