Spark内核

RDD是基础,是spark中一个基础的抽象,是不可变的,比如我们加载进的数据RDD,如果想更改其中的内容是不允许的;分区的集合,可以并行来计算;RDD类中包含了很多基础的操作,例如map filter persist,RDD的数据是加载到内存中,使用persist可将内存中的数据持久化到磁盘中,也可以持久化到内存中。对RDD的一些算子操作放在PairRDDFunctions类中,比如groupByKey、join等
任何操作会通过隐式转换自动匹配任何类型的RDD

Resilient Distributed Dataset 弹性分布式数据集

每个RDD有五个主要的特性。RDD可以有副本,通过persist的方式持久化出副本。初始加载是没有副本的,初始加载到内存中只有一个。

五大特性(前3个特性每个RDD都有)
A list of partitions
每个RDD是由一组partition组成的
每个partition是在一个节点中连续的数据
在HDFS中存储的文件分为多个block块,每个block块对应一个partition
数据会遵循数据本地性,当spark使用HDFS中的数据文件时,文件的block在哪个节点,就会将该block加载到自身节点内存中,形成partition,供spark使用。
A function for computing each split
从数据的角度看一个partition对应一个split
并行计算如果对RDD进行map操作,会把map操作应用到每个partition上去
A list of dependencies on other RDDs
RDD会记着由谁产生,为了做容错,因为RDD是瞬时的转化,如果上个RDD存在,那么用上个RDD的数据接着计算,如果上个RDD不存在,那么再往前找
PairRDD依赖FilterRDD依赖HadoopRDD
RDD的生成在内存中,内存中的数据不稳定,如果宕机,数据就没了,spark会重算,spark是并行计算,partition:HadoopRDD-> FilterRDD ->PairRDD,如果计算过程中某条线出现了错误,那spark只会重新计算这条线,不会影响其他partition。
Optionally, a Partitioner for key-value RDDS
可对RDD重新进行分区,提高并行度,提高计算速度,分区多了,partition中的数据就少了,计算也就快了,有相应的算子。默认分区方式是对key取哈希取模,hash-partitioned,根据下游partition的数量,partition的数量是几就模几。
键值对的RDD可以自定义分区,所有RDD都可以进行分区
Optionally, a list of preferred locations to compute each split on
数据本地性
如果读HDFS中的block,一个block有三个副本,就有一个最优位置,但是如果读的是本地文件,就会随便放在某台spark节点,那么此选项就没用了

sc.textFile()将HDFS的数据封装到RDD,遵循数据本地性,HDFS中数据文件的block在哪台机器,就会加载到哪台机器的内存中。
partition是具体的概念,指在某个节点中连续的数据
RDD是抽象的概念

spark运行时

Driver:驱动程序,任务调度,发配当前的job任务,将任务切分为多个task,把task发到每个物理节点,task将每个物理节点的数据加载到对应机器的内存中,在内存中一条线的进行计算,将计算结果返回给驱动程序。不同的job,driver在不同机器上,这样才能做到分布式(mapreduce中的job)

流程示意
分布式文件系统(File system)--加载数据集
都是封装为RDD
transformations延迟执行—针对RDD的操作
所有操作都是针对RDD,每步转化成为算子操作
Action触发执行
碰到action就会将之前的代码封装为job,提交到集群中执行

代码示例

filter是transformation算子,延迟算子
count是action算子,立即执行。
碰到filter延迟算子,不先计算,碰到action算子会把前边的代码封装为job,提交到集群中进行运算。
errors.persist(); errors.cache();等价。
持久化在内存。如果RDD需要复用,需要持久化,以供后边代码使用。如果不持久化,那么计算http_errors时会重新计算之前的代码生成errors。
RDD是瞬时存在的状态,产生新的RDD,旧的RDD就没了。

转载于:https://www.cnblogs.com/EnzoDin/p/8552248.html

SparkRDD内核相关推荐

  1. SparkRDD操作之aggregate

    SparkRDD操作之aggregate 看代码最好解释 package cn.sparkdemo.coreimport org.apache.spark.rdd.RDD import org.apa ...

  2. Linux 内核,30 年C 语言将升级至 C11

    Linux 内核,30 年C 语言将升级至 C11 还在使用 89 年版 C 语言的 Linux 内核,现在终于要做出改变了.今天,Linux 开源社区宣布,未来会把内核 C 语言版本升级到 C11, ...

  3. i.MX6UL: i.MX 6UltraLite处理器 - 低功耗,安全,Arm® Cortex®-A7内核

    i.MX6UL: i.MX 6UltraLite处理器 - 低功耗,安全,Arm® Cortex®-A7内核 概述 i. MX6UltraLite作为i.MX6系列的扩展,一系列高性能.超高效的处理器 ...

  4. 硬件平台上深度学习自动内核优化

    硬件平台上深度学习自动内核优化 对于AI开发人员来说,在各种硬件平台上优化深度神经网络的性能仍然是一个难题.在系统支持方面,在这里面临着许多问题:将训练有素的模型从多个前端(例如Tensorflow, ...

  5. 双精度张量内核加快了高性能计算

    双精度张量内核加快了高性能计算 通过NVIDIA Ampere架构,仿真和迭代求解器可将FP64数学提高多达2.5倍. 模拟可以帮助了解黑洞的奥秘,并了解冠状病毒上的蛋白质尖峰如何导致COVID-19 ...

  6. 嵌入式Linux设备驱动程序:编写内核设备驱动程序

    嵌入式Linux设备驱动程序:编写内核设备驱动程序 Embedded Linux device drivers: Writing a kernel device driver 编写内核设备驱动程序 最 ...

  7. 分离内核和虚拟机支持安全的关键任务边缘计算

    分离内核和虚拟机支持安全的关键任务边缘计算 Separation kernels and VMs enable secure mission critical edge computing Lynx软 ...

  8. TinyML设备设计的Arm内核

    TinyML设备设计的Arm内核 Arm cores designed for TinyML devices Arm推出了两个新的IP核,旨在为终端设备.物联网设备和其低功耗.成本敏感的应用程序提供机 ...

  9. 2021年大数据Spark(二十二):内核原理

    目录 Spark内核原理 RDD 依赖 窄依赖(Narrow Dependency) ​​​​​​​Shuffle 依赖(宽依赖 Wide Dependency) ​​​​​​​如何区分宽窄依赖 ​​ ...

最新文章

  1. findler mac 隐藏文件_Fiddler使用文档
  2. 独家 | 集成学习入门介绍
  3. MicroProfile社区对Jakarta EE的影响
  4. 裸奔、抽烟、凡尔赛,原来数学家玩得这么野……
  5. GPUImage – 色阶 GPUImageLevelsFilter
  6. 彻底弄懂计算机中的大端小端
  7. mysql去重操作哪个最快_如何将 MySQL 去重操作优化到极致?| CSDN 博文精选
  8. style 里引用php变量,在VUE style中使用data中的变量的方法详解
  9. Dictionary集合
  10. MongoDB 数据集合导出 与 导入
  11. 《遥感原理与应用》孙家抦版知识点总结(含简答题)——第五章
  12. 3dMax 整体旋转与自转
  13. EyouCMS瀑布流分页详细教程
  14. html+css画一个潇洒哥
  15. 常见电脑故障处理方法
  16. 为什么你的工具类APP用户量不少,却难以找到变现模式?
  17. 新⼀代USDP开源套件,可替代CDH的免费大数据套件平台及架构选型
  18. Abbkine通用型免疫(共)沉淀试剂盒解决方案
  19. tor the onion router下载_抓紧时机,大樱桃就这么两个月的热卖期,这个配方绝对可以(已打包可下载)...
  20. outlook邮件内容丢失与Mail API异常

热门文章

  1. MySQL48道经典基础面试题(包含各个方面)
  2. 2. 线性表的顺序结构
  3. [蓝桥杯]试题 基础练习 Huffuman树
  4. bzoj 1641: [Usaco2007 Nov]Cow Hurdles 奶牛跨栏(floyd)
  5. 弦图与完美消除序列(bzoj 1006: [HNOI2008]神奇的国度)
  6. Lucas+阶乘打表+费马小定理模板2.0
  7. python绘图 条形图 直方图 饼图 箱型图 误差图 多图绘制 图表注释 三维图形
  8. Linkerd2安装和使用
  9. python机器学习案例系列教程——集成学习(Bagging、Boosting、随机森林RF、AdaBoost、GBDT、xgboost)
  10. 不同抽样间隔T对正弦信号进行抽样