2017-08-01 93 views
0

generating the parquet file從相同csv fileDask數生成具有許多小文件鑲木文件(超過200文件與3MB的大小)和R Sergeant生成2個.parquet文件與520 MB和280 MB)。
我們嘗試使用fastparquet.writerow_group_offset關鍵字,但沒有成功。在Dask中使用partition_on添加了一組分區,但在每個分區中有許多子文件(數百甚至數千)。的鑲木子文件

我們如何控制Python和R中鑲木地板文件的大小?這也是一次一個作用於輸入數據塊 -

回答

0

fastparquet,默認拼花作家DASK,如果你使用partition_onrow_group_offset將使更多的每個輸入數據塊的至少一個拼花文件,或。您將擁有的塊數將默認等於CSV文件的數量。

爲了減少塊的數目,您必須重新洗牌的數據(這可能是昂貴的,所以只有明確需要的時候完成的),例如,

df = df.repartition(npartitions=10) 

寫入之前。此外,如有必要,您可以使用force=True進行上述嘗試。

請注意,在許多情況下,通過設置索引(​​)和對數據進行半排序來完成此重新分區/重新配置操作是有意義的,這可以爲以後的查詢產生更好的性能。

+0

感謝您的回覆 - 我設法對文件進行重新分區 - 現在我正在嘗試瞭解分區大小的注意事項。 [fastparquet中的文檔](https://fastparquet.readthedocs.io/en/latest/details.html#partitions-and-row-groups)並不能解釋如何處理文件沒有高基數情況。 –

+0

這樣的東西往往取決於使用情況。索引上較小的分區對於選擇很有用,或者對於只需要某些值的分類可能導致不必讀取所有數據;但更大的分區總是更高效地閱讀。確保內存中的分區大小*總是比工作RAM小得多,特別是對於並行。 HDFS塊大小通常爲128MB,旨在實現這一規則。 – mdurant

相關問題