繁体   English   中英

强制 dask to_parquet 写入单个文件

[英]Force dask to_parquet to write single file

使用dask.to_parquet(df, filename)时,会创建一个子文件夹filename并将多个文件写入该文件夹,而pandas.to_parquet(df, filename)只写入一个文件。 我可以使用 dask 的to_parquet (不使用compute()创建 pandas df)只写一个文件吗?

在并行系统中写入单个文件非常困难。 抱歉,Dask(也可能任何其他并行处理库)不提供这样的选项。

理论上,您可以通过大量工作来执行操作:您需要遍历 dataframe 的分区,写入目标文件(保持打开)并将 output 行组累积到文件的最终元数据页脚。 我会知道如何使用 fastparquet 来解决这个问题,但是这个库已经没有太多开发了。

有多个文件是有原因的(特别是当一个大文件不适合内存时)但是如果你真的只需要 1 你可以试试这个

import dask.dataframe as dd
import pandas as pd
import numpy as np

df = pd.DataFrame(np.random.randn(1_000,5))

df = dd.from_pandas(df, npartitions=4)
df.repartition(npartitions=1).to_parquet("data")

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM