【问题标题】:Writing a Parquet file from multiple Python processes using Dask使用 Dask 从多个 Python 进程编写 Parquet 文件
【发布时间】:2025-12-14 18:55:02
【问题描述】:

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

我使用fastparquet

它似乎有效,但我想知道_metadata 文件如何在两个进程同时写入它的情况下不发生冲突。

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

【问题讨论】:

    标签: dask parquet fastparquet


    【解决方案1】:

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

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

    【讨论】:

    • 谢谢!写完所有数据文件后如何创建元数据文件?
    • 或者创建一个空的 dask 数据框并使用 map_fn 填充它可能更有效?但是那我如何控制磁盘上的写入呢?
    • 没有单一功能,但您可以从 fastparquet.util.metadata_from_many 开始
    最近更新 更多