Spark独到见解--2总技术栈见解之SparkCore
来源:互联网 发布:淘宝双11 销售额 编辑:程序博客网 时间:2024/05/21 19:46
1) RDD
1) 概念
RDD(Resilient Distributed Dateset),弹性分布式数据集。
2) RDD的五大特性:
1. RDD是由一系列的partition组成的。
2. 函数是作用在每一个partition(split)上的。
3. RDD之间有一些列的依赖关系。
4. 分区器是作用在K,V格式的RDD上。
5. RDD提供一系列最佳的计算位置。
2) RDD理解图:
*注意:
textFile方法底层封装的是读取MR读取文件的方式,读取文件之前先split,默认split大小是一个block大小。
RDD实际上不存储数据,这里方便理解,暂时理解为存储数据。
*什么是K,V格式的RDD?
如果RDD里面存储的数据都是二元组对象,那么这个RDD我们就叫做K,V格式的RDD。
*哪里体现RDD的弹性(容错)?
partition数量,大小没有限制,体现了RDD的弹性。
RDD之间依赖关系,可以基于上一个RDD重新计算出RDD。
*哪里体现RDD的分布式?
RDD是由Partition组成,partition是分布在不同节点上的。
RDD提供计算最佳位置,体现了数据本地化。体现了大数据中“计算移动数据不移动”的理念。
3)Spark任务执行原理
以上图中有四个机器节点,Driver和Worker是启动在节点上的进程,运行在JVM中的进程。
Ø Driver与集群节点之间有频繁的通信。
Ø Driver负责任务(tasks)的分发和结果的回收。任务的调度。如果task的计算结果非常大就不要回收了。会造成oom。
Ø Worker是Standalone资源调度框架里面资源管理的从节点。也是JVM进程。
Ø Master是Standalone资源调度框架里面资源管理的主节点。也是JVM进程。
4)Spark代码流程
1 . 创建SparkConf对象
Ø 可以设置Applicationname。
Ø 可以设置运行模式及资源需求。
2. 创建SparkContext对象
3. 基于Spark的上下文创建一个RDD,对RDD进行处理。
4. 应用程序中要有Action类算子来触发Transformation类算子执行。
关闭Spark上下文对象SparkContext。5 ) Transformations转换算子
1.概念:
Transformations类算子是一类算子(函数)叫做转换算子,如map,flatMap,reduceByKey等。Transformations算子是延迟执行,也叫懒加载执行。
Transformation类算子:
Ø filter
过滤符合条件的记录数,true保留,false过滤掉。
Ø map
将一个RDD中的每个数据项,通过map中的函数映射变为一个新的元素。
特点:输入一条,输出一条数据。
Ø flatMap
先map后flat。与map类似,每个输入项可以映射为0到多个输出项。
Ø sample
随机抽样算子,根据传进去的小数按比例进行又放回或者无放回的抽样。
Ø reduceByKey
将相同的Key根据相应的逻辑进行处理。
Ø sortByKey/sortBy
作用在K,V格式的RDD上,对key进行升序或者降序排序。
6 ) Action行动算子
Ø count
返回数据集中的元素数。会在结果计算完成后回收到Driver端。
Ø take(n)
返回一个包含数据集前n个元素的集合。
Ø first
first=take(1),返回数据集中的第一个元素。
Ø foreach
循环遍历数据集中的每个元素,运行相应的逻辑。
Ø collect
将计算结果回收到Driver端。
ü 思考:一千万条数据量的文件,过滤掉出现次数多的记录,并且其余记录按照出现次数降序排序。
............................未完待续........................
- Spark独到见解--2总技术栈见解之SparkCore
- Spark独到见解--3控制算子
- Spark独到见解--Transformation算子总结
- Spark独到见解--Action算子总结
- Spark独到见解--1、什么是Spark?及和MR的区别
- 技术人员的发展之路--有关人生、自由的独到见解
- 见解
- spark工作机制见解
- 软件开发技术之个人见解
- Coreldraw修改平面图独到漂亮见解就在这里了
- Web Services技术见解
- URL 之见解
- android intent 之见解
- extjs 我之见解
- 我之见解字符串
- javaee之jsp见解
- int xhci_plat_probe之见解
- 人与鱼之见解
- 粒子物理蒙特卡罗模拟库Geant4源码编译安装手记(Ubuntu16.04+cmake)
- php xdebug_debug_zval 函数的使用
- 网络流24题:太空飞行计划问题
- 语音接口技术浅析
- nodejs 升级后, vue+webpack 项目 node-sass 报错的解决方法
- Spark独到见解--2总技术栈见解之SparkCore
- tableview修改selectedBackgroundView的frame
- jmeter学习笔记(二)-接口测试
- log4j
- java:基于volatile和Thread Local Storage的双重检查锁定实现延迟初始化
- 17110101_Tomcat、Weblogic、WebSphere、JBoss关系与区别
- Neural Networks and Deep Learning之中文翻译-第一章 用神经网络识别手写数字
- 抓包工具tcpdump
- LTE物理传输资源(1)-帧结构和OFDM符号