spark checkpoint和localCheckpoint性能对比测试

自从解决spark的问题:如何解决spark大量连续计算卡死的问题?,我得开始考虑如何更快!

4个rdd,都是十万左右的数据量,相互关联计算,共计算两百多次。每隔10个计算来一次checkpoint,执行3次,反正就是每次数据和计算量都一样,来对比checkpoint和localCheckpoint性能。

1.使用hive 保存中间结果,代替checkpoint

var table = "tabaleName"
dataset.write.mode(SaveMode.Overwrite).saveAsTable(table)
dataset = spark.table(table)

平均执行完耗时:3min50s

 

2.dataset=dataset.localCheckpoint()

平均执行完耗时:3min7s

注:没有跟着执行action算子,其实一个dataset也就执行了一次checkpoint

 

3.dataset=dataset.checkpoint()

平均执行完耗时:3min29s

注:没有跟着执行action算子,其实一个dataset也就执行了一次checkpoint

 

虽然官方说localcheckpoint可能会快但也有导致job失败的风险(Local checkpoints are written to executor storage and despite  potentially faster they are unreliable and may compromise job completion),但这个快的优势,和忽略不计的风险,我还是选速度。

 

第一种方法很快,我觉得是因为及时执行了得原因,而checkpoint没有及时执行action算子,下面加上action算子试一下。

 

4.dataset=dataset.localCheckpoint();dataset.show();

平均执行完耗时:2min57s

确实更快

 

5.dataset=dataset.localCheckpoint();dataset.count();

平均执行完耗时:2min58s

和show算子差不多

 

猪说使用chache一起效果更佳,只用chache不用checkpoint肯定是会卡死的

6.dataset.persist();dataset=dataset.localCheckpoint();dataset.show();

dataset.persist()
var newDs=dataset.localCheckpoint()
newDs.show()
newDs

平均执行完耗时:3min4s

 

7.每隔5个计算执行一次checkpoint

平均执行完耗时:3min8s

没有什么作用

 

总结直接使用方案4,先localCheckPoint,再调用show action算子,基本上就最优了。

 

 

登录后即可回复 登录 | 注册
    
关注编程学问公众号