第39课:Spark中的Broadcast和Accumulator机制解密
2023-09-27 14:26:47 时间
第39课:Spark中的Broadcast和Accumulator机制解密
Spark的Broadcast和Accumulator很重要,在实际的企业级开发环境中一般会使用Broadcast和Accumulator。Broadcast和Accumulator和RDD是Spark中并列的三大基础数据结构。大家谈Spark的时候首先谈RDD,RDD是一个并行的数据,关注在jvm中怎么处理数据。很多时候可能忽略了Broadcast和Accumulator,这2个变量都是全局级别的,例如集群中有1000台机器,那Broadcast和Accumulator可以在1000台机器中共享。在分布式的基础之上,如果有共享的数据结构,那是非常有用的。
分布式大数据系统中,我们进行编程的时候首先考虑数据结构:
l RDD: 分布式私有数据结构。RDD本身是一个并行化的本地化的数据结构,运行的时候在一个个线程中运行,RDD是私有的运行数据和私有的运行过程,但在一个Stage里面是一样的,一个线程一个时刻只处理一个数据分片,另一个线程一个时刻只处理另一个数据片。在设计业务逻辑的时候,我们通常考虑这个分片如何去处理。
l Broadcast:分布式全局只读数据结构。
l Accumulator:分布式全局只写的数据结构。我们不会在线程池中读取Accumulator,但在Driver上可以读取Accumulator。
在生产环境下,我们几乎一定会自定义Accumulator:
1,自定义的时候可以让Accumulator非常复杂,基本上可以是任意类型的Java和Scala对象;
2,在自定义Accumulator的时候,我们可以实现一些“技术福利”,例如在A
相关文章
- 解决spark dataframe get 报空指针异常 java.lang.NullPointerException
- 190 Spark与Storm的对比
- 180 Spark程序执行
- 深入理解Spark:核心思想与源码分析. 3.12 Spark环境更新
- Tuning Spark
- 《循序渐进学Spark》一1.7 本章小结
- 在YARN上运行Spark的常用配置参数讲解
- 《Spark Cookbook 中文版》一导读
- Spark集群部署
- 监控Spark应用方法简介
- 《Spark与Hadoop大数据分析》一一2.5 小结
- [Spark][Python][RDD][DataFrame]从 RDD 构造 DataFrame 例子
- [Spark][Python]groupByKey例子