论坛
潜水/灌水快乐,沉淀知识,认识更多同行。
ToB圈子
加入IT圈,遇到更多同好之人。
朋友圈
看朋友圈动态,了解ToB世界。
ToB门户
了解全球最新的ToB事件
博客
Blog
排行榜
Ranklist
文库
业界最专业的IT文库,上传资料也可以赚钱
下载
分享
Share
导读
Guide
相册
Album
记录
Doing
搜索
本版
文章
帖子
ToB圈子
用户
免费入驻
产品入驻
解决方案入驻
公司入驻
案例入驻
登录
·
注册
只需一步,快速开始
账号登录
立即注册
找回密码
用户名
Email
自动登录
找回密码
密码
登录
立即注册
首页
找靠谱产品
找解决方案
找靠谱公司
找案例
找对的人
专家智库
悬赏任务
圈子
SAAS
IT评测·应用市场-qidao123.com技术社区
»
论坛
›
虚拟化.超融合.云计算
›
公有云
›
云盘算复习之Spark(Scala版)期末复习整理 ...
云盘算复习之Spark(Scala版)期末复习整理
万有斥力
论坛元老
|
2024-6-9 15:15:56
|
显示全部楼层
|
阅读模式
楼主
主题
1664
|
帖子
1664
|
积分
4992
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要
登录
才可以下载或查看,没有账号?
立即注册
x
声明:
1. 本文针对的是一个知识的梳理,自行整理以及方便记忆
2. 如有错误不当之处, 请指出
Scala是一种针对JVM 将面向函数和面向对象技能组合在一起的编程语言。Scala编程语言近来捉住了很多开辟者的眼球。它看起来像是一种纯粹的面向对象编程语言,而又无缝地联合了下令式和函数式的编程风格。
Scala官网6个特征:
1).Java和scala可以混编
2).范例推测(自动推测范例)
3).并发和分布式
4).特质,特征(类似java中interfaces 和 abstract联合)
5).模式匹配(类似java switch)
6).高阶函数
scala有个原则就是极简原则,不用写的东西一概不写。
Scala的根本操纵具体参考:Scala快速入门(实用于学习Spark)_scala spark-CSDN博客
Spark的特点:快速,易用,通用,随处运行
MapReduce和Spark的对比:
spark是内存盘算框架,mapreduce是磁盘盘算框架
这张图显而易见,性能高
Spark的生态体系良好,学习起来方便
根本概念与架构
driver作为管家结点,当执行一个Application时,Driver会向集群管理器申请资源,启动Executor,并向Executor发送应用程序代码和文件,然后在Executor上执行Task,运行结束后,执行效果会返回给Driver,或者写到HDFS或者其他数据库中
简述Spark集群的根本运行流程
1)spark集群启动后,Worker向Master注册信息,spark-submit下令提交程序后,driver和application也会向Master注册信息,创建SparkContext对象:主要的对象包罗DAGScheduler和TaskScheduler
2)Driver把Application信息注册给Master后,Master会根据App信息去Worker节点启动Executor
3)Executor内部会创建运行task的线程池,然后把启动的Executor反向注册给Dirver
4)DAGScheduler:负责把Spark作业转换成Stage的DAG(Directed Acyclic Graph有向无环图),根据宽窄依赖切分Stage,然后把Stage封装成TaskSet的情势发送个TaskScheduler;同时DAGScheduler还会处理惩罚由于Shuffle数据丢失导致的失败;
5)TaskScheduler:维护所有TaskSet,分发Task给各个节点的Executor(根据数据当地化策略分发Task),监控task的运行状态,负责重试失败的task;
6)所有task运行完成后,SparkContext向Master注销,释放资源;
1.为应用构建起根本的运行环境,即由Driver创建一个SparkContext进行资源的申请、任务的分配和监控(SparkContext构建起应用和集群直接的接洽,连接集群的通道)
2.资源管理器为Executor分配资源,并启动Executor进程
写入RDD的缘故原由
RDD提供了一组丰富的操纵以支持常见的数据运算,分为“动作”(Action)和“”(Transformation)两种范例,RDD提供的转换接口都非常简单,都是类似map、filter、groupBy、join等粗粒度的数据转换操纵,而不是针对某个数据项的细粒度修改(不得当网页爬虫)
执行过程
惰性机制,转换记载轨迹,到了动作的时候才会真正的盘算
RDD的依赖关系和分别
宽依赖和窄依赖
窄依赖
表现为一个父RDD的分区对应于一个子RDD的分区或多个父RDD的分区对应
于一个子RDD的分区(一对一,多对一)
宽依赖
表现为存在一个父RDD的一个分区对应一个子RDD的多个分区(多对一)
碰到宽依赖断开,碰到窄依赖就把RDD加到阶段中,就可以生成多个阶段。每个阶段包罗很多任务,这些阶段派发给各个结点执行
看个例子:
先分别出stage2,然后碰到F到G断开,A-B断开...最终形成
所以RDD的运行流程就是:
(1)创建RDD对象
(2)SparkContext负责盘算RDD之间的依赖关系,构建DAG
(3)DAGScheduler负责把DAG图分解成多个Stage每个Stage中包罗了多个Task每个Task会被TaskScheduler分发给各个WorkerNode上的Executor去执行
这张图能详细说明spark的核心原理
创建RDD的方式
1.文件体系创建
2.数组的方式创建
看个例子:
从文件体系创建RDD
通过数组读取
通过parallelize生成每个RDD
转换操纵
举措操纵
举措(Action)操纵是真正触发盘算的地方。Spark程序执行到举措操纵时,才会执行真正的盘算,从文件中加载数据,完成一次又一次转换操纵,最终,盘算得到效果
前两行不会真正执行,只会记载这个举措,第三行reduce操纵才会举措,第二活动求每行的长度。
第三行执行的时候会先求每行长度,然后做一个汇总
再来个例子:
切割每行,统计每行单词数,返回最大的
键值对RDD
pairRDD
文件数据读写
1.当地文件读写
把文件写归去
JSON数据读写
SparkSql简介
shark直接从hive内里搬过来的,只有蓝色部分,转换成spark,提升性能
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复
使用道具
举报
0 个回复
正序浏览
返回列表
快速回复
高级模式
B
Color
Image
Link
Quote
Code
Smilies
您需要登录后才可以回帖
登录
or
立即注册
本版积分规则
发表回复
回帖并转播
发新帖
回复
万有斥力
论坛元老
这个人很懒什么都没写!
楼主热帖
MyBatis-Plus入门教程及基本API使用案 ...
几个函数的使用例子:更新VBRK-XBLNR, ...
EFCore 动态拼接查询条件(表达式树方式 ...
深度理解 C# 中的 for 和 foreach ...
OpenJDK和OracleJDK的区别说明
阿里巴巴Java开发手册(全册四版) ...
Excel 制作可视化看板的思路及操作 ...
.net 发邮件的小工具,包含json,环境 ...
2022年混过的那些SAP项目
MySQL分区表对NULL值的处理
标签云
AI
运维
CIO
存储
服务器
浏览过的版块
云原生
IOS
MES
快速回复
返回顶部
返回列表