Spark-广播变量

Posted Mr.zhou_Zxy

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Spark-广播变量相关的知识,希望对你有一定的参考价值。

Spark-广播变量

广播变量用来高效的分发较大的对象。向所有工作结点发送一个较大的只读值,以供其他的RDD使用。

  • 理解记忆

在这里插入图片描述

  • Code
package com.zxy.spark.Streaming.day005

import org.apache.spark.broadcast.Broadcast
import org.apache.spark.rdd.RDD
import org.apache.spark.{SparkConf, SparkContext}

object demo3 {
    def main(args: Array[String]): Unit = {
        val sc = new SparkContext(new SparkConf().setAppName("demo3").setMaster("local[*]"))
        //定义广播变量类型
        val mapBroad: Map[String, String] = Map(
            "mi" -> "小米",
            "apple" -> "苹果",
            "lenovo" -> "联想"
        )
        //定义广播变量
        val brandBC: Broadcast[Map[String, String]] = sc.broadcast(mapBroad)
        val ElecRDD: RDD[Electronic_brand] = sc.parallelize(List(
            Electronic_brand(0, "apple"),
            Electronic_brand(1, "mi"),
            Electronic_brand(2, "lenovo")
        ))
        ElecRDD.map(info => {
            val brand: String = brandBC.value.getOrElse(info.EID,"NULL")
            Electronic_brand(info.id,brand)
        }).collect().foreach(println)
    }
}
case class Electronic_brand(id:Int,EID:String)

在这里插入图片描述

以上是关于Spark-广播变量的主要内容,如果未能解决你的问题,请参考以下文章

访问不同类中的 Spark 广播变量

Spark 系列—— 累加器与广播变量

Spark 系列—— 累加器与广播变量

入门大数据---Spark累加器与广播变量

sparksql缓存表能做广播变量吗

spark中的广播变量broadcast