我有一个菜鸟火花问题。这是我正在尝试执行的程序:
dataset
.join(anotherDataset)
.repartition(7000)
.flatmap(doComputation)
.persist(StorageLevel.MEMORY_AND_DISK)
.saveToS3()
我正在尝试的计算(doComputation)很昂贵,并且由于内存限制,我决定将数据集重新分区为7000个分区(即使我有1200个执行程序,因此一次只执行1200个)。然而,在进行计算之后,我尝试写入s3,其工作正常,但很少有任务最终超时并且重试作业。
1)为什么在执行昂贵的计算后我坚持生成的RDD会重试整个作业?
2)我在persist之后尝试合并,但是然后spark忽略了重新分区并仅执行了500个任务:
dataset
.join(anotherDataset)
.repartition(7000)
.flatmap(doComputation)
.persist(StorageLevel.MEMORY_AND_DISK)
.coalesce(500)
.saveToS3()
有什么方法可以重新分区(7000) - 计算(在这7000个分区上)-coalesce(500)然后写入s3?
答案 0 :(得分:0)