spark 广播变量
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 广播变量的更多相关文章
- Spark 广播变量BroadCast
一. 广播变量 广播变量允许程序员将一个只读的变量缓存在每台机器上,而不用在任务之间传递变量.广播变量可被用于有效地给每个节点一个大输入数据集的副本.Spark还尝试使用高效地广播算法来分发变量,进而 ...
- 【Spark-core学习之七】 Spark广播变量、累加器
环境 虚拟机:VMware 10 Linux版本:CentOS-6.5-x86_64 客户端:Xshell4 FTP:Xftp4 jdk1.8 scala-2.10.4(依赖jdk1.8) spark ...
- spark广播变量定时更新
广播变量 先来简单介绍下spark中的广播变量: 广播变量允许程序员缓存一个只读的变量在每台机器上面,而不是每个任务保存一份拷贝.例如,利用广播变量,我们能够以一种更有效率的方式将一个大数据量输入集合 ...
- Spark 广播变量 和 累加器
1. 广播变量 理解图 使用示例 # word.txt hello scala hello python hello java hello go hello julia hello C++ hello ...
- Spark 广播变量和累加器
Spark 的一个核心功能是创建两种特殊类型的变量:广播变量和累加器 广播变量(groadcast varible)为只读变量,它有运行SparkContext的驱动程序创建后发送给参与计算的节点.对 ...
- Spark广播变量和累加器
一.广播变量图解 二.代码 val conf = new SparkConf() conf.setMaster("local").setAppName("brocast& ...
- Spark RDD持久化、广播变量和累加器
Spark RDD持久化 RDD持久化工作原理 Spark非常重要的一个功能特性就是可以将RDD持久化在内存中.当对RDD执行持久化操作时,每个节点都会将自己操作的RDD的partition持久化到内 ...
- Spark性能优化(2)——广播变量、本地缓存目录、RDD操作、数据倾斜
广播变量 背景 一般Task大小超过10K时(Spark官方建议是20K),需要考虑使用广播变量进行优化.大表小表Join,小表使用广播的方式,减少Join操作. 参考:Spark广播变量与累加器 L ...
- spark累加器、广播变量
一言以蔽之: 累加器就是只写变量 通常就是做事件统计用的 因为rdd是在不同的excutor去执行的 你在不同excutor中累加的结果 没办法汇总到一起 这个时候就需要累加器来帮忙完成 广播变量是只 ...
随机推荐
- Centos 7 安装和配置Redis
一. 安装 操作系统:Centos 7. 最小化安装 redis版本: 4.0.6 服务器地址:*** 第一步:下载redis安装包(如果有新的,下载最新的redis安装包) wget http:// ...
- python pip 代理设置
pip install --proxy="user:password@server:port" packagename origin url: http://xiuxixiuxi. ...
- s16 计算机网络基础
交换机设备说明 1)交换机设备说明 交换机概念:解决多台主机在一个网络里面通讯的需求 主机身份标识信息:称为叫做mac地址 交换机通讯的网络范围:称为叫做一个局域网 交换机传输数据问题: 01.会有广 ...
- C++友元函数、友元类
1.什么是友元函数? 友元函数就是可以直接访问类的成员(包括私有数据)的非成员函数,也就是说他并不属于这个类,他是一种外部的函数. 一个外部函数只能通过类的授权成为这个类友元函数,这就涉及到一个关键字 ...
- iOS9 视频播放
self.videoFileURL = [NSURL URLWithString:[NSString stringWithFormat:@"file:///%@", self ...
- OpenGL中常用的函数
OPengl的官方文档如下:https://www.opengl.org/sdk/docs/man4/ void glGetIntegerv( GLenum pname, GLint * ...
- Cacti部署
1>监控概述 通常运维人员在一个企业当中所需要管理一台或者多台服务器,或者甚至更多,特别是BAT公司或者门户级别的公司,一个人管理的服务器可能上百甚至上千台 ...
- [CentOS]Centos设置网卡
IP设定查看Command # ifconfig -a # netstat -nr 给eth0设定值 # vi /etc/sysconfig/network-scripts/ifcfg-eth0 DE ...
- centos 安装 tkinter(不只用来做界面,在pylot中也使用)
Python2 [root@binger ~]# yum -y install tkinter tcl-devel tk-devel [root@binger ~]# rpm -qa | grep ^ ...
- [Erlang31]Erlang trace总结
在一个并行的世界里面,我们很难做到单步断点调试来定位问题(太多的消息飞来飞去),Erlang设计者也深刻体会到这一点,推出了另一个trace机制. 通过这个trace,你可以: .特定进程集内的函数调 ...