Spark广播变量实现原理及基础编程
生活随笔
收集整理的這篇文章主要介紹了
Spark广播变量实现原理及基础编程
小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
Spark廣播變量實(shí)現(xiàn)原理及基礎(chǔ)編程
實(shí)現(xiàn)原理
廣播變量用來(lái)高效分發(fā)較大的對(duì)象。向所有工作節(jié)點(diǎn)發(fā)送一個(gè)較大的只讀值,以供一個(gè)或多個(gè) Spark 操作使用。比如,如果你的應(yīng)用需要向所有節(jié)點(diǎn)發(fā)送一個(gè)較大的只讀查詢表,廣播變量用起來(lái)都很順手。在多個(gè)并行操作中使用同一個(gè)變量,但是 Spark 會(huì)為每個(gè)任務(wù)分別發(fā)送。
基礎(chǔ)編程
pom
<properties><maven.compiler.source>8</maven.compiler.source><maven.compiler.target>8</maven.compiler.target><spark.version>3.1.1</spark.version><spark.scala.version>2.12</spark.scala.version> </properties> <dependencies><dependency><groupId>org.apache.spark</groupId><artifactId>spark-core_${spark.scala.version}</artifactId><version>${spark.version}</version></dependency> </dependencies>代碼
package com.zxl.spark.coreimport org.apache.spark.broadcast.Broadcast import org.apache.spark.rdd.RDD import org.apache.spark.{SparkConf, SparkContext}object BroadcastDemo {def main(args: Array[String]): Unit = {val conf: SparkConf = new SparkConf().setMaster("local[4]").setAppName("BroadcastDemo")val sc: SparkContext = new SparkContext(conf)val rdd: RDD[(String, Int)] = sc.makeRDD(List( ("a",1), ("b", 2), ("c", 3), ("d", 4) ),4)val list: List[(String, Int)] = List(("a", 4), ("b", 5), ("c", 6), ("d", 7))val broadcast: Broadcast[List[(String, Int)]] = sc.broadcast(list)//這里使用到的是偏函數(shù)rdd.map{case (key,num)=>{var num2=0for ((k,v) <- broadcast.value) {if (k==key){num2=v}}(key,(num,num2))}}.collect().foreach(println)} }運(yùn)行結(jié)果
(a,(1,4)) (b,(2,5)) (c,(3,6)) (d,(4,7))總結(jié)
以上是生活随笔為你收集整理的Spark广播变量实现原理及基础编程的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: K8S滚动更新示例演示
- 下一篇: 2021年office2010每次打开都