Spark---SparkCore(三)

一、Spark广播变量和累加器

1、广播变量

1)、广播变量理解图

2)、广播变量使用

复制代码
val conf = new SparkConf()
conf.setMaster("local").setAppName("brocast")
val sc = new SparkContext(conf)
val broadCast = sc.broadcast(list)
val lineRDD = sc.textFile("./words.txt")
lineRDD.filter { x => broadCast.value.contains(x) }.foreach { println }
sc.stop()

3)、注意事项

能不能将一个RDD使用广播变量广播出去?

不能,因为RDD是不存储数据的。可以将RDD的结果广播出去。

广播变量只能在Driver端定义,不能在Executor端定义。

在Driver端可以修改广播变量的值,在Executor端无法修改广播变量的值。

2、累加器

1)、累加器理解图

2)、累加器的使用

复制代码
val conf = new SparkConf()
conf.setMaster("local").setAppName("accumulator")
val sc = new SparkContext(conf)
val accumulator = sc.accumulator(0)
sc.textFile("./words.txt").foreach { x => {accumulator.add(1) } }
println(accumulator.value)
sc.stop()

3)、注意事项

累加器在Driver端定义赋初始值,累加器只能在Driver端读取,在Excutor端更新。

二、Spark weibui界面

1、SparkUI界面介绍

可以指定提交Application的名称

复制代码
./spark-shell --master  spark://node1:7077 --name myapp

2、配置historyServer

1)、临时配置,对本次提交的应用程序起作用

复制代码
./spark-shell --master spark://node1:7077 
--name myapp1
--conf spark.eventLog.enabled=true
 --conf spark.eventLog.dir=hdfs://node1:9000/spark/test

停止程序,在Web Ui中Completed Applications对应的ApplicationID中能查看history。

2)、spark-default.conf配置文件中配置HistoryServer,对所有提交的Application都起作用

在客户端节点,进入../spark-1.6.0/conf/ spark-defaults.conf最后加入:

复制代码
//开启记录事件日志的功能
spark.eventLog.enabled           true
//设置事件日志存储的目录
spark.eventLog.dir                    hdfs://node1:9000/spark/test
//设置HistoryServer加载事件日志的位置
spark.history.fs.logDirectory   hdfs://node1:9000/spark/test
//日志优化选项,压缩日志
spark.eventLog.compress         true

启动HistoryServer:

复制代码
./start-history-server.sh

访问HistoryServer:node4:18080,之后所有提交的应用程序运行状况都会被记录。

相关推荐
凉冰不加冰1 分钟前
Spring Boot自动配置原理深度解析
java·spring boot·后端
月亮不月亮40 分钟前
月亮商场购物打折Java
java·eclipse
guozhetao1 小时前
【ST表、倍增】P7167 [eJOI 2020] Fountain (Day1)
java·c++·python·算法·leetcode·深度优先·图论
技术思考者1 小时前
基础很薄弱如何规划考研
java·经验分享·考研
前端小巷子1 小时前
Webpack 5模块联邦
前端·javascript·面试
晓得迷路了1 小时前
栗子前端技术周刊第 91 期 - 新版 React Compiler 文档、2025 HTML 状态调查、Bun v1.2.19...
前端·javascript·react.js
江城开朗的豌豆1 小时前
前端路由傻傻分不清?route和router的区别,看完这篇别再搞混了!
前端·javascript·vue.js
●VON1 小时前
重生之我在暑假学习微服务第二天《MybatisPlus-下篇》
java·学习·微服务·架构·mybatis-plus
老华带你飞1 小时前
口腔助手|口腔挂号预约小程序|基于微信小程序的口腔门诊预约系统的设计与实现(源码+数据库+文档)
java·数据库·微信小程序·小程序·论文·毕设·口腔小程序
hqxstudying1 小时前
J2EE模式---服务层模式
java·数据库·后端·spring·oracle·java-ee