Spark广播变量

使用广播变量来优化,广播变量的原理是:

在每一个Executor中保存一份全局变量,task在执行的时候需要使用和这一份变量就可以,极大的减少了Executor的内存开销。

Executor中task在执行的时候如果使用到了广播变量,会找Executor里面的BlockManager来获取广播变量。

如果BlockManager中没有这个关闭变量,会从driver端拉取关闭变量。

在Driver端也有一个blockManagerMaster,其他的task执行的时候直接使用blockmanager中的广播变量就可以。

package SparkStreaming;

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.Arrays;
import java.util.List; public class BroadCast {
public static void main(String[] args) {
SparkConf conf = new SparkConf()
.setMaster("local")
.setAppName("BroadCast");
JavaSparkContext sc = new JavaSparkContext(conf);
/*
* 使用广播变量,广播变量的定义必须在driver端,因为sc没有被序列化不能被发送到Executor端
* */
Broadcast<String> blackname = sc.broadcast("dwj3");
List<String> name = Arrays.asList(
"dwj1",
"dwj2",
"dwj3");
//String blackName = "dwj3";
JavaRDD<String> nameRDD = sc.parallelize(name);
JavaRDD<String> namefilter = nameRDD.filter(new Function<String, Boolean>() {
@Override
public Boolean call(String s) throws Exception {
String blacknames = blackname.getValue();
return !blacknames.equals(s);
}
});
List<String> lastname = namefilter.collect();
for(String str:lastname){
System.out.println(str);
}
}
}

注意:在声明广播变量的时候,必须在driver端,因为sc没有被序列化,是不能被发送到Executor端的。

spark 广播变量的更多相关文章

  1. Spark 广播变量BroadCast

    一. 广播变量 广播变量允许程序员将一个只读的变量缓存在每台机器上,而不用在任务之间传递变量.广播变量可被用于有效地给每个节点一个大输入数据集的副本.Spark还尝试使用高效地广播算法来分发变量,进而 ...

  2. 【Spark-core学习之七】 Spark广播变量、累加器

    环境 虚拟机:VMware 10 Linux版本:CentOS-6.5-x86_64 客户端:Xshell4 FTP:Xftp4 jdk1.8 scala-2.10.4(依赖jdk1.8) spark ...

  3. spark广播变量定时更新

    广播变量 先来简单介绍下spark中的广播变量: 广播变量允许程序员缓存一个只读的变量在每台机器上面,而不是每个任务保存一份拷贝.例如,利用广播变量,我们能够以一种更有效率的方式将一个大数据量输入集合 ...

  4. Spark 广播变量 和 累加器

    1. 广播变量 理解图 使用示例 # word.txt hello scala hello python hello java hello go hello julia hello C++ hello ...

  5. Spark 广播变量和累加器

    Spark 的一个核心功能是创建两种特殊类型的变量:广播变量和累加器 广播变量(groadcast varible)为只读变量,它有运行SparkContext的驱动程序创建后发送给参与计算的节点.对 ...

  6. Spark广播变量和累加器

    一.广播变量图解 二.代码 val conf = new SparkConf() conf.setMaster("local").setAppName("brocast& ...

  7. Spark RDD持久化、广播变量和累加器

    Spark RDD持久化 RDD持久化工作原理 Spark非常重要的一个功能特性就是可以将RDD持久化在内存中.当对RDD执行持久化操作时,每个节点都会将自己操作的RDD的partition持久化到内 ...

  8. Spark性能优化(2)——广播变量、本地缓存目录、RDD操作、数据倾斜

    广播变量 背景 一般Task大小超过10K时(Spark官方建议是20K),需要考虑使用广播变量进行优化.大表小表Join,小表使用广播的方式,减少Join操作. 参考:Spark广播变量与累加器 L ...

  9. spark累加器、广播变量

    一言以蔽之: 累加器就是只写变量 通常就是做事件统计用的 因为rdd是在不同的excutor去执行的 你在不同excutor中累加的结果 没办法汇总到一起 这个时候就需要累加器来帮忙完成 广播变量是只 ...

随机推荐

  1. error:while loading shared libraries: libevent-2.1.so.6: cannot open shared object file: No such file or directory

    执行 memcached 启动命令时,报错,提示:error while loading shared libraries: libevent-2.1.so.6: cannot open shared ...

  2. jQuery中mouseover和mouseout冒泡产生闪烁问题

    问题:在jQuery中,对元素绑定mouseover和mouseout事件时,每次移入移出该元素和子元素时,都会触发事件,从而会出现闪动的现象. 原因:浏览器的冒泡行为. 解决方案: 使用mousee ...

  3. Nginx搭建成功后,无法访问Tomcat问题

    一.nginx搭建好后无法访问后端Tomcat项目 通过项目名称过滤的方式访问Tomcat,比如项目名称叫easy. 修改其server下的location目录,配置如下: server { #监听的 ...

  4. Interceptor for {http://cxf.liuyang.com/}IHiServiceService has thrown exception, unwinding now org.apache.cxf.binding.soap.SoapFault: Error reading XMLStreamReader.

    Jquery同域访问:客户端连接服务器访问跨域访问:通过本地html文档,浏览器点击开访问(jquery不支持此访问) 用域名的方式访问http://localhost:8080/CXF_09_jqu ...

  5. CocoaPods:library not found for -lPods

    This is my first shot to write a blog in English. Enjoy! ;) CocoaPods is a popular way to control iO ...

  6. B-spline Curves 学习之B样条曲线性质(5)

    B-spline Curves: Important Properties 本博客转自前人的博客的翻译版本,前几章节是原来博主的翻译内容,但是后续章节博主不在提供翻译,后续章节我在完成相关的翻译学习. ...

  7. OpenSSL命令---crl2pkcs7

    用途: 本命令根据CRL或证书来生成pkcs#7消息. 用法: openssl crl2pkcs7 [-inform PEM|DER ] [-outform PEM|DER ] [-in filena ...

  8. Objective-C 学习笔记(四) 数组

    Objective-C 数组作为函数参数传递 如果想在一个函数作为参数,通过一维数组,就必须声明函数形式参数 方式一    指针作为形式参数 - (void) myFunction(int *) pa ...

  9. SEGGER J-Link install

    Why J-Link? In case you wonder why GNU ARM Eclipse decided to provide support to SEGGER J-Link, the ...

  10. 代码修改之后MSbuild编译不出最新的dll解决方法

    问题: 使用jenkins发布的时候,开发不断反馈自己修改的文件使用jenkins没有发布到测试环境.经过查证发现使用MSBUILD编译的时出现修改的文件编译出的日期不是最新日期,但是使用VS编译就不 ...