美文网首页
【Spark共享变量分析】

【Spark共享变量分析】

作者: 热血趁年华 | 来源:发表于2018-07-15 02:02 被阅读0次

前言

当一个函数传递给spark集群去运行的时候(map,reduce)。该函数的所有变量都会在各个节点的任务中创建一个副本,当该变量数据计较大的手,会极大的占用计算机宝贵的内存资源。并且各个节点的变量是相互隔离的,变量的更新也不会传入到driver中。针对于此,spark提供了两种类型的共享变量,广播变量和累加器。

闭包

跨作用域访问函数量变。深度解释,在spark集群中,如果在main函数也就是driver中定义了变量,使用foreach或者map等函数使用该变量的时候,会在每个节点任务中创建该变量的副本,并且对于副本的操作更新相互隔离的,也就是说每个节点对于变量的更新操作都不会影响driver中的变量值,这样就是闭包,闭包会导致数据操作异常。

广播变量

使用广播变量可以是变量在每个节点上缓存一个副本而不是各个任务中

sparkcontext.broadcast(Array(1,2,3))

累加器

使用累加器可以方便的在集群中统计数量,一般使用+=进行自增,我们也可以使用自定义的累计器,继承AccumulatorParam

val c = sparkcontext.accumulator(0,"a")

c+=1

相关文章

  • Spark-broadcast

    参见Spark相关--共享变量-广播变量-broadcast

  • 【Spark共享变量分析】

    前言 当一个函数传递给spark集群去运行的时候(map,reduce)。该函数的所有变量都会在各个节点的任务中创...

  • 7.spark共享变量

    spark共享变量 1 Why Apache Spark2 关于Apache Spark3 如何安装Apache ...

  • Spark中使用Scala synchronized 并发加锁创

    摘要:Spark,Scala,synchronized executor端共享变量 Spark的rdd调用map或...

  • Spark 共享变量

    翻译 Spark 共享变量部分的官方文档(Spark 2.4.3)。 通常,当传递给 Spark 操作 (如 ma...

  • spark 共享变量

    关于累计器, 广播变量, 参考:http://blog.csdn.net/u013468917/article/d...

  • Spark 共享变量

    默认情况下,如果在一个算子的函数中使用到了某个外部的变量,那么这个变量的值会被拷贝到每个task中。此时每个tas...

  • Spark 共享变量

    通常,当把一个函数传递给Spark的操作时(例如map或reduce操作),函数可以使用在驱动程序中定义的变量,但...

  • Spark共享变量

    共享变量分类 共享变量官网解释 Normally, when a function passed to a Spa...

  • spark2原理分析-广播变量(Broadcast Variab

    概述本文介绍spark中Broadcast Variables的实现原理。 基本概念在spark中广播变量属于共享...

网友评论

      本文标题:【Spark共享变量分析】

      本文链接:https://www.haomeiwen.com/subject/vrvupftx.html