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