簡體   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