[英]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.