0

我有一個5節點cluster.I使用pyspark將一個100k csv文件加載到數據幀並執行一些etl操作並將輸出寫入parquet文件。 當我加載數據框時,如何將數據集統一劃分到每個執行器處理20k記錄的所有執行者OS中。pyspark在所有執行者之間均勻分配負載

+0

你可以用'重新分區(5)'。 – philantrovert

回答

0

如果可能,請確保將輸入數據拆分爲更小的文件。 這樣每個執行者將讀取和處理單個文件。

在,你不能修改輸入文件的情況下,你可以打電話df.repartition(5),但請記住,這將導致昂貴的整理操作

+0

如您所說,添加重新分區的時間會更長。我想如果數據在所有5個節點上均勻分佈,則此過程將更快完成。 df = sqlContext.read.format('com.databricks.spark.csv')。load(「/ dwo_poc/rows.csv」) dz = df.repartition(5) dz.show(100) – srini

+0

也是這樣建議不要重新分配。似乎洗牌的成本比並行性的好處和平均分配負載的成本要高。如果我的理解錯誤,請糾正我。 – srini

+0

沒有一個適合所有人的答案。最好嘗試一下,看看什麼最適合你的工作量 – lev