千锋教育-做有情怀、有良心、有品质的职业教育机构

手机站
千锋教育

千锋学习站 | 随时随地免费学

千锋教育

扫一扫进入千锋手机站

领取全套视频
千锋教育

关注千锋学习站小程序
随时随地免费学习课程

当前位置:首页  >  技术干货  > 【操作教程】累加器和广播变量在哪些场景使用

【操作教程】累加器和广播变量在哪些场景使用

来源:千锋教育
发布人:syq
时间: 2022-07-22 17:55:00 1658483700

  累加器和广播变量在哪些场景使用?累加器是分布式的并且共享只写变量。如果在转换运算符中调用了累加器,并且没有后续的动作运算符,则不会执行累加器。如果后面两次调用action操作符,累加器会被执行两次,导致过度加法。

累加器和广播变量在哪些场景使用

  1、广播变量的使用介绍

  解决的场景:

1

  将Driver进程的共享数据发送给所有子节点的Executor进程的每个任务。如果不使用广播变量技术,Driver端默认会将共享数据分发给各个[Task],对网络分发造成很大压力。

  如果采用广播变量技术,Driver端的共享数据只会发送给每个[Executor]。 Executor 中的所有任务都重用这个对象。确保共享对象是[可序列化的]。因为跨节点传输的数据必须是可序列化的。

  将共享对象广播到Driver端的每个Executor:

  val bc = sc.broadcast(共享对象)

  在执行器中获得:

  bc.值

  2、累加器的使用方法

  集群中的所有 Executor 对同一个变量执行累积操作。 Spark 目前只支持累加 [add] 操作。内置3个累加器:【LongAccumulator】、【DoubleAccumulator】、【CollectionAccumulator】。

  如何使用整数累加器?

  在Driver端定义整数累加器并赋初值。

  acc=sc.accumulator(0)

  Executor端每次累加1

  acc+=1

  或者 acc.add(1)

2

  3、综合案例

3

4

  以上代码不仅练习了累加器和广播变量在哪些场景使用,还练习了如何使用函数式编程(Map、Filter),如何创建上下文变量,以及如何使用并行性。这些练习比较全面,希望能帮助你学习更多技能。更多关于IT大数据培训的问题,欢迎咨询千锋教育在线名师,如果想要了解我们的师资、课程、项目实操的话可以点击咨询课程顾问,获取试听资格来试听我们的课程,在线零距离接触千锋教育大咖名师,让你轻松从入门到精通。

tags:
声明:本站稿件版权均属千锋教育所有,未经许可不得擅自转载。
10年以上业内强师集结,手把手带你蜕变精英
请您保持通讯畅通,专属学习老师24小时内将与您1V1沟通
免费领取
今日已有369人领取成功
刘同学 138****2860 刚刚成功领取
王同学 131****2015 刚刚成功领取
张同学 133****4652 刚刚成功领取
李同学 135****8607 刚刚成功领取
杨同学 132****5667 刚刚成功领取
岳同学 134****6652 刚刚成功领取
梁同学 157****2950 刚刚成功领取
刘同学 189****1015 刚刚成功领取
张同学 155****4678 刚刚成功领取
邹同学 139****2907 刚刚成功领取
董同学 138****2867 刚刚成功领取
周同学 136****3602 刚刚成功领取
相关推荐HOT