有没有办法增量更新Dask元数据文件?

有没有办法增量更新Dask元数据文件?,dask,dask-distributed,fastparquet,dask-dataframe,Dask,Dask Distributed,Fastparquet,Dask Dataframe,我试图处理一个数据集,并在Dask中写入数据时进行增量更新。Dask元数据文件在重新读取处理后的数据时会有很大帮助。但是,当我将新的分区/子集写入同一路径时,那里的元数据会被新的分区/子集覆盖,而不是随它们一起更新 import dask.dataframe as dd df = dd.read_parquet(read_path) # some transformations df = … df.to_parquet(write_path, partition_on=[col1, col2,

我试图处理一个数据集,并在Dask中写入数据时进行增量更新。Dask元数据文件在重新读取处理后的数据时会有很大帮助。但是,当我将新的分区/子集写入同一路径时,那里的元数据会被新的分区/子集覆盖,而不是随它们一起更新

import dask.dataframe as dd

df = dd.read_parquet(read_path)
# some transformations
df = …
df.to_parquet(write_path, partition_on=[col1, col2, …], write_metadata_file=True)
看了一些地方,还没有找到一个明显的方法来做到这一点。有人知道有没有人做过处理这种用例的事情?可以增量更新元数据文件,也可以对其中的一些文件进行编辑/组合。任何建议都将不胜感激。

Dask的
to_parquet()
方法有一个
append
模式,我想这正是您想要的:

append : bool, optional

    If False (default), construct data-set from scratch.
    If True, add new row-group(s) to an existing data-set.
    In the latter case, the data-set must exist, and the schema must match the input data.


我已成功地将此功能用于
pyarrow
引擎,版本为
1.0.1
此问题特定于
fastparquet
引擎(在
pyarrow
中工作正常)。

谢谢!我尝试过使用
附加
。虽然它会增量地更新分区/子集,但不会增量地更新
\u元数据
文件,这正是我希望做的。
\u元数据
即使在
append
模式下也会被覆盖。嗯,我使用append模式会正确更新元数据文件。你用的是什么发动机?我在使用
pyarrow
时没有遇到任何问题。我只是想澄清一下,
\u元数据
文件将始终被覆盖,但我理解您的意思是,在执行
附加
后,新的
\u元数据
文件将忽略预先存在的分区?我使用的是
fastparquet
。是的,我的意思是新的
\u元数据
文件将忽略预先存在的分区,而不是将新分区添加到预先存在的分区中。需要明确的是,您是否在使用
pyarrow
引擎时使其正常工作(即
\u元数据
与目录中的所有分区一致地被覆盖)?是的,我已经测试编写/附加/读取了许多数据集,并且每次使用
pyarrow==1.0.1