Spark中廣播變量和累加器

一、前述

Spark中因?yàn)樗阕又械恼嬲壿嬍前l(fā)送到Executor中去運(yùn)行的,所以當(dāng)Executor中需要引用外部變量時(shí)帅涂,需要使用廣播變量。

累機(jī)器相當(dāng)于統(tǒng)籌大變量尤蛮,常用于計(jì)數(shù)媳友,統(tǒng)計(jì)。

二产捞、具體原理

1醇锚、廣播變量

  • 廣播變量理解圖
image
  • 注意事項(xiàng)

1、能不能將一個(gè)RDD使用廣播變量廣播出去坯临?

不能焊唬,因?yàn)镽DD是不存儲(chǔ)數(shù)據(jù)的恋昼。可以將RDD的結(jié)果廣播出去。

2赶促、 廣播變量只能在Driver端定義液肌,不能在Executor端定義。

3芳杏、 在Driver端可以修改廣播變量的值矩屁,在Executor端無(wú)法修改廣播變量的值。

4爵赵、如果executor端用到了Driver的變量吝秕,如果不使用廣播變量在Executor有多少task就有多少Driver端的變量副本。

5空幻、如果Executor端用到了Driver的變量烁峭,如果使用廣播變量在每個(gè)Executor中只有一份Driver端的變量副本。

val conf = new SparkConf()
conf.setMaster("local").setAppName("brocast")
val sc = new SparkContext(conf)
   val list = List("hello","world")
    val broadCast = sc.broadcast(list)
    val lineRDD = sc.textFile("input/*")
    lineRDD.filter { x => {println(broadCast.value);broadCast.value.contains(x)} }.collect().foreach { println}
    sc.stop()

2秕铛、累加器

  • 累加器理解圖
image
image

Scala代碼:
有問(wèn)題

object acculateDemo {

  def main(args: Array[String]): Unit = {
    val conf = new SparkConf().setMaster("local").setAppName("sortDemo")
    val sc = new SparkContext(conf)

    var accumulator = 0
    sc.textFile("input/*",2).foreach {//兩個(gè)變量
      x =>{accumulator += x.toInt
        println(accumulator)}}
    println(accumulator)
    sc.stop()

  }

}

正確

import org.apache.spark.{SparkConf, SparkContext}

object AccumulatorOperator {
  def main(args: Array[String]): Unit = {
    val conf = new SparkConf()
    conf.setMaster("local").setAppName("accumulator")
    val sc = new SparkContext(conf)
    val accumulator = sc.longAccumulator
    sc.textFile("./records.txt",2).foreach {//兩個(gè)變量
      x =>{accumulator.add(1)
      println(accumulator)}}
    println(accumulator.value)
    sc.stop()
  }
}

結(jié)果:

image
package com.neusoft

import org.apache.spark.{SparkConf, SparkContext}

/**
  * Created by ttc on 2018/10/17.
  */

object acculateDemo {

  def main(args: Array[String]): Unit = {
    val conf = new SparkConf().setMaster("local")
    val sc = new SparkContext(conf)

    val rdd = sc.textFile("/root/words.txt",10)
    val sum = sc.collectionAccumulator[String]

    rdd.map(x=>{
      sum.add(x)
    }).collect()

    println("sum is " + sum.value)
    sc.stop()

  }
}

注意事項(xiàng)

累加器在Driver端定義賦初始值约郁,累加器只能在Driver端讀取最后的值,在Excutor端更新但两。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末鬓梅,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子谨湘,更是在濱河造成了極大的恐慌绽快,老刑警劉巖,帶你破解...
    沈念sama閱讀 217,826評(píng)論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件紧阔,死亡現(xiàn)場(chǎng)離奇詭異坊罢,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)擅耽,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,968評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門活孩,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人乖仇,你說(shuō)我怎么就攤上這事憾儒。” “怎么了这敬?”我有些...
    開封第一講書人閱讀 164,234評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵航夺,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我崔涂,道長(zhǎng),這世上最難降的妖魔是什么始衅? 我笑而不...
    開封第一講書人閱讀 58,562評(píng)論 1 293
  • 正文 為了忘掉前任冷蚂,我火速辦了婚禮缭保,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘蝙茶。我一直安慰自己艺骂,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,611評(píng)論 6 392
  • 文/花漫 我一把揭開白布隆夯。 她就那樣靜靜地躺著钳恕,像睡著了一般。 火紅的嫁衣襯著肌膚如雪蹄衷。 梳的紋絲不亂的頭發(fā)上忧额,一...
    開封第一講書人閱讀 51,482評(píng)論 1 302
  • 那天,我揣著相機(jī)與錄音愧口,去河邊找鬼睦番。 笑死,一個(gè)胖子當(dāng)著我的面吹牛耍属,可吹牛的內(nèi)容都是我干的托嚣。 我是一名探鬼主播,決...
    沈念sama閱讀 40,271評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼厚骗,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼示启!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起领舰,我...
    開封第一講書人閱讀 39,166評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤夫嗓,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后提揍,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體啤月,經(jīng)...
    沈念sama閱讀 45,608評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,814評(píng)論 3 336
  • 正文 我和宋清朗相戀三年劳跃,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了谎仲。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,926評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡刨仑,死狀恐怖郑诺,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情杉武,我是刑警寧澤辙诞,帶...
    沈念sama閱讀 35,644評(píng)論 5 346
  • 正文 年R本政府宣布,位于F島的核電站轻抱,受9級(jí)特大地震影響飞涂,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,249評(píng)論 3 329
  • 文/蒙蒙 一较店、第九天 我趴在偏房一處隱蔽的房頂上張望士八。 院中可真熱鬧,春花似錦梁呈、人聲如沸婚度。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,866評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)蝗茁。三九已至,卻和暖如春寻咒,著一層夾襖步出監(jiān)牢的瞬間哮翘,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,991評(píng)論 1 269
  • 我被黑心中介騙來(lái)泰國(guó)打工仔涩, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留忍坷,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,063評(píng)論 3 370
  • 正文 我出身青樓熔脂,卻偏偏與公主長(zhǎng)得像佩研,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子霞揉,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,871評(píng)論 2 354

推薦閱讀更多精彩內(nèi)容

  • 一旬薯、前述 Spark中因?yàn)樗阕又械恼嬲壿嬍前l(fā)送到Executor中去運(yùn)行的,所以當(dāng)Executor中需要引用外部...
    __元昊__閱讀 283評(píng)論 0 5
  • 一适秩、前述 Spark中因?yàn)樗阕又械恼嬲壿嬍前l(fā)送到Executor中去運(yùn)行的绊序,所以當(dāng)Executor中需要引用外部...
    piziyang12138閱讀 537評(píng)論 0 0
  • 一、前述 Spark中因?yàn)樗阕又械恼嬲壿嬍前l(fā)送到Executor中去運(yùn)行的秽荞,所以當(dāng)Executor中需要引用外部...
    張明洋_4b13閱讀 414評(píng)論 0 0
  • 一骤公、前述 Spark中因?yàn)樗阕又械恼嬲壿嬍前l(fā)送到Executor中去運(yùn)行的,所以當(dāng)Executor中需要引用外部...
    數(shù)據(jù)萌新閱讀 294評(píng)論 0 0
  • 今天幾號(hào)來(lái)著扬跋? 原來(lái)十月已經(jīng)過(guò)去三分之二了… 這種體驗(yàn)太常見了吧阶捆,我們感慨時(shí)間飛逝,感覺自己什么都沒有做钦听,怎么就又...
    鹽吃苦瓜不加糖閱讀 284評(píng)論 0 0