links是一个网站->关联的其他网站的map
ranks是一个保存每个网站的权重
for循环对整个过程迭代10次
先join得到id->(links, rank),也就是某网站的id到外链们和·权重。对于每一个外联,计算得到的权重,最后flatMap打散成外链->得到的权重。
reduceByKey合并相同的外联得到的权重。
优化的点:
1、分区并持久化:将links这个数据量比较大的分区后持久化,减少了shuffle
2、使用mapValue而不是map:map可能会改变key,从而改变分区,mapValue不会改变分区,保持分区后续不用分区。
3、在类似reduceByKey分区操作后使用mapValues仍然可以保留分区,下次迭代的时候跟links进行join操作的时候减少shuffle。
网友评论