从examples中学Spark(一):BroadcastTest.scala

本文介绍了Spark中的Broadcast变量和Accumulator的概念及其使用。Broadcast变量用于广播大对象到每个节点,提高效率,不可修改。Accumulators则为并行计算中的累加器,仅支持添加操作,用于计数或求和。文章强调了何时适用这些共享变量,并提到了Spark的内存管理策略。
摘要由CSDN通过智能技术生成

之前学习都是官网API Doc+社区的博文,最近参考了几篇examples,发觉example+doc才是绝配。
由于集群Spark版本是2.1.1,所以我学习的examples示例是2.1.1版本中的,2.2.0版本中关于ml【也就是DataFrame版的mllib】的examples有不少内容与2.1.1版本不同
**注意:**使用ml的一些example还需要导入examples下的scopt_2.11-3.3.0.jar和spark-examples_2.11-2.1.1.jar

##学习前(理论)

  1. 默认情况下,函数中使用到的每一个变量会拷贝到每一个执行函数的节点(Worker)的【在Spark On Yarn模式中就是NodeManager节点】每个Task上——在每一个节点中,有不止一个的Executor【CoarseGrainedExecutorBackend创建】,它是Application运行在Worker上的一个进程【进程名就叫CoarseGrainedExecutorBackend】,每个Executor能并行运行多个Task【线程池中获取,具体数量取决于分配给Executor的CPU core数】。

  2. 最主要的是,各个远程节点上变量的更新并不会传播回 driver program(驱动程序)通用且支持 read-write(读-写) 的共享变量在任务间是低效的。另外,如果变量特别大,一方面会加大网络IO,一方面也会占用太多内存。

  3. 广播变量(Broadcast variables):Spark 会自动广播出每个 stage(阶

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值