一、RDD:Resilient Distributed DateSet,弹性分布式数据集 五大特性
是由一系列partition组成函数作用在每个partition上partition之间有一系列依赖关系分区器作用在K,V格式的RDD上RDD提供一些列最佳的计算位置1.默认情况下,一个block对应一个partition 2.RDD并不存储数据,我的理解是:
RDD就是一些套在数据上的计算,当获取的数据经过这些RDD时,就会被加工成自己想要的数据3.如果进过本次RDD出来的数据格式是二元组格式,则本次RDD称为K,V格式的RDD
二、Spark任务执行原理 1.Driver和Worker是运行在节点上的进程,运行在JVM中的进程 2.Driver与集群节点之间有频繁的通信 3.Driver负责任务(task)的分发、结果的回和任务的调度。如果结算结果很大,就不要回收了,会造成oom(out of memory) 4.Worker是standalone资源调度框架里面资源管理的从节点。也是JVM进程 5.Master是standalong资源管理框架里面资源管理的主节点,也是JVM进程
三、Spark代码流程
创建SparkConf对象 设置master,conf.setMaster("") 详情:https://www.jianshu.com/p/aaac505908dd 设置appName,conf.setAppName("")创建SparkContext上下文对象,需要以conf作为参数基于上下文对象SparkContext创建一个RDD,对RDD做各种操作使用Action类算子触发Transformation算子关闭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端