【发布时间】:2018-09-16 11:30:20
【问题描述】:
如何强制(大部分)均匀分布?
我想执行以下操作:
df.repartition(5000) // scatter
.transform(some_complex_function)
.repartition(200) // gather
.write.parquet("myresult")
确实,在重新分区步骤之后执行了 5000 个任务。但是,每个任务的输入文件大小在小于 1MB 到 16MB 之间变化。
数据仍然存在偏差。如何确保它不再倾斜并有效地使用集群资源。
编辑
我了解到,这是由于使用了复杂类型的列,即数组。另请注意,some_complex_function 在此列上运行,即其复杂性随着数组中元素的数量而增加。
对于这种情况,有没有更好的分区方法?
【问题讨论】:
标签: apache-spark apache-spark-sql