广播变量与累加器

广播变量

   # 1.将本地list标记为广播变量即可
    boardcast=sc.broadcast(list)
    # 2.使用广播变量的时候从中取出list对象即可
    value=boardcast.value
    # 即通过boardcast这个中间传输对象,就会是只是每个excutor发一份了

场景:本地集合对象和RDD进行关联的时候,需要进行封装。

优点:节省网络IO,excutor内存

 

累加器

分布式场景下,driver的count与excutor的count互不干扰,因为两个count本来就属于不同的服务端。举例来说:map10个元素分2个区,2个excutor的count分别为5,而driver的count是0

如果需要积累计算,就需要用到spark提供的累加器功能

  # spark提供的累加器,初始值为参数
    acmlt=sc.accumulator(0)

 

posted @ 2024-02-21 22:23  天启A  阅读(19)  评论(0)    收藏  举报