第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定

Spark的廣播變量機(jī)制

標(biāo)簽:
Spark

Spark广播变量

什么是广播变量?

在同一个Execute共享同一份计算逻辑的变量

广播变量使用场景

我现在要在在这些内容中过滤java和object-c


webp

过滤内容

  • 使用广播变量过滤代码逻辑:

package com.chenzhipeng.spark.examples01;import org.apache.spark.SparkConf;import org.apache.spark.api.java.JavaRDD;import org.apache.spark.api.java.JavaSparkContext;import org.apache.spark.api.java.function.Function;import org.apache.spark.broadcast.Broadcast;import java.util.ArrayList;import java.util.List;/**
 * <p>Title:BroadcastMain</p>
 * <p>Description:广播变量</p>
 * @version V1.0
 * @author ZhiPeng_Chen
 * @date: 2017/12/23
 */public class BroadcastMain {    public static void main(String[] args) {

        SparkConf sparkConf = new SparkConf();

        sparkConf.setMaster("local").setAppName("BroadcastMain");

        JavaSparkContext context = new JavaSparkContext(sparkConf);

        JavaRDD<String> rdd = context.textFile("examples-01/src/main/resources/names");        //添加过滤的信息
        List list = new ArrayList<String>();
        list.add("java");
        list.add("object-c");        //使用广播变量
       final Broadcast<List> broadcast = context.broadcast(list);

        JavaRDD<String> filter = rdd.filter(new Function<String, Boolean>() {            private static final long serialVersionUID = 1L;            @Override
            public Boolean call(String v1) throws Exception {                //过滤集合中的内容
                return !broadcast.value().contains(v1);

            }
        });        //触发执行后的过滤后结果
        List<String> collect = filter.collect();        for (String str : collect) {
            System.out.println(str);
        }

        context.close();
        context.stop();

    }

}

执行结果:


webp

过滤后结果

为什么要使用广播变量?

主要用于节约内存的开销。

Driver每次分发任务的时候会把task和计算逻辑的变量发送给Executor,不是使用广播变量会有多份的变量副本。这样会导致消耗大量的内存导致严重的后果。

  • 不使用广播变量:

webp

不使用广播变量

  • 使用广播变量:

webp

使用广播变量

总结

如果不使用广播变量,task的个数越多越消耗性能,使用广播变量Driver端不管分发有多少个task在同一个Executor只享用同一份变量。

使用注意事项

  • 广播变量在Driver端定义

  • 广播变量在Execoutor只能读取不能修改

  • 广播变量的值只能在Driver端修改



作者:陈_志鹏
链接:https://www.jianshu.com/p/295a3b3c7fdb


點(diǎn)擊查看更多內(nèi)容
TA 點(diǎn)贊

若覺(jué)得本文不錯(cuò),就分享一下吧!

評(píng)論

作者其他優(yōu)質(zhì)文章

正在加載中
  • 推薦
  • 評(píng)論
  • 收藏
  • 共同學(xué)習(xí),寫下你的評(píng)論
感謝您的支持,我會(huì)繼續(xù)努力的~
掃碼打賞,你說(shuō)多少就多少
贊賞金額會(huì)直接到老師賬戶
支付方式
打開(kāi)微信掃一掃,即可進(jìn)行掃碼打賞哦
今天注冊(cè)有機(jī)會(huì)得

100積分直接送

付費(fèi)專欄免費(fèi)學(xué)

大額優(yōu)惠券免費(fèi)領(lǐng)

立即參與 放棄機(jī)會(huì)
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)

舉報(bào)

0/150
提交
取消