使用 Dask 从多个 Python 进程写入 Parquet 文件

Writing a Parquet file from multiple Python processes using Dask

是否可以从 Python 中的不同进程写入相同的 Parquet 文件夹?

我用fastparquet.

它似乎可以工作,但我想知道 _metadata 文件怎么可能没有冲突,以防两个进程同时写入它。

此外,为了使其正常工作,我不得不使用 ignore_divisions=True,这对于稍后读取 Parquet 文件时获得快速性能来说并不理想,对吧?

Dask 整合了来自不同进程的元数据,因此它只在其余部分完成后才写入 _metadata 文件,这发生在单个线程中。

如果您使用自己的多处理设置将单独的 parquet 文件写入单个文件夹,每个文件通常会写入单个数据文件,根本不会 _metadata。您可以像 Dask 那样收集片段,或者在数据文件准备好后整合元数据。