SparkCore

一、RDD:Resilient Distributed DateSet,弹性分布式数据集
五大特性

  1. 是由一系列partition组成
  2. 函数作用在每个partition上
  3. partition之间有一系列依赖关系
  4. 分区器作用在K,V格式的RDD上
  5. RDD提供一些列最佳的计算位置

RDD理解图
1.默认情况下,一个block对应一个partition
2.RDD并不存储数据,我的理解是:

	RDD就是一些套在数据上的计算,当获取的数据经过这些RDD时,就会被加工成自己想要的数据

3.如果进过本次RDD出来的数据格式是二元组格式,则本次RDD称为K,V格式的RDD

二、Spark任务执行原理
spark任务执行原理
1.Driver和Worker是运行在节点上的进程,运行在JVM中的进程
2.Driver与集群节点之间有频繁的通信
3.Driver负责任务(task)的分发、结果的回和任务的调度。如果结算结果很大,就不要回收了,会造成oom(out of memory)
4.Worker是standalone资源调度框架里面资源管理的从节点。也是JVM进程
5.Master是standalong资源管理框架里面资源管理的主节点,也是JVM进程

三、Spark代码流程

  1. 创建SparkConf对象
    设置master,conf.setMaster("")
    详情:https://www.jianshu.com/p/aaac505908dd
    设置appName,conf.setAppName("")
  2. 创建SparkContext上下文对象,需要以conf作为参数
  3. 基于上下文对象SparkContext创建一个RDD,对RDD做各种操作
  4. 使用Action类算子触发Transformation算子
  5. 关闭SparkContext:sc.stop()

四、算子
Transformation:转换类算子,该类算子懒加载执行,即在调用的时候并不会立即执行。

1.filter:过滤符合条件的记录,返回true时保留,返回false过滤
2.map:将RDD中的每个数据项,映射为一个新的数据项。输入A,输出B
3.flatMap:与map类似,先map,再flat。将一个数据项映射为0到多个元素。
4.sample:随机抽样,根据传进去的比例(小数)进行抽取相应数据,true放回,false不放回。当设置了第三个参数时,如果参数一致,则每次执行或在不同机器上执行,对同一数据集结果相同
5.reduceByKey:对相同Key的数据做相关操作
6.sortBy/sortByKey:作用在K,V格式的RDD上,对数据进行排序,默认是升序,false设置降序。sortByKey以key进行排序。sortBy需要自己指定排序的数据项

Action:执行类算子。在调用该类算子时会立刻执行。在加工数据时遇到的Transformation算子都会被触发,一个Application应用中可以有多个Action,一个Action对应一个job。

1.count,返回数据集中的元素数量。会在结果计算完成后将计算结果返回给Driver
2.take(num),返回一个数据集中的前num个元素的集合
3.first,返回一个数据集中的第一个元素,底层是通过take(1)获取的
4.foreach,遍历数据集中的每一个元素,执行相关处理
5.collect,将数据集拉取到Driver端
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值