spark视频笔记 发表于 2021-01-12 | 更新于 2022-06-28 | 分类于 python | 阅读次数: 123456789101112131415161718192021222324252627282930313233宽依赖:一对多,必定会发生shuffle操作窄依赖:一对一一个DAG就是一个job,一个job分层很多个stage,stage划分的依据是宽依赖,task是由分区数决定的一个rdd分层三个区则对应三个task每个阶段的task的数量是最后一个rdd的分区数rdd转换操作和行动操作(也称为算子)转换操作: 分为单value、双value和key-value的形式 单value: map、mapPartitions、mapPartitionsWithIndex、flatMap、glom、groupBy、filter、sample、distinct、coalesce、repartition、sortBy、mapvalues 双value: intersection、union、substract、zip key-value: partitionBy、reduceByKey、groupByKey、aggregateByKey、foldByKey、combineByKey、sortByKey、join、leftOuterJoin、cogroup、groupbyKey性能差于reducebyKey,因为reduce先分区操作了,然后再shuffle操作后,将分区间的数据合并再操作,这个两个算子shuffle过程都是写入文件的,防止数据量导致内存溢出,然后reducebykey的io数据量远远小于groupbykey,但是根据场景的不同可能存在并不需要聚合的情况,这会儿groupbykey就可以使用到了针对reducebykey区内和区间的操作都一样,当区内区外不一样的时候可以使用aggregrative,实现自定义持久化的三种方法cache、persist和checkpoint区别,chechpoint存在磁盘重写分区器累加器和broadcast[只写和只读]: 累加器的原理:分executor执行,然后driver在执行.executor之间互不影响,Accoumolotor支持自定义,累加器本身不执行,当遇到行动算子的时候才会执行,因而推荐放到行动算子里面,否则可能会多次执行: brocast用于闭包变量共享,否则多少线程数就需要复制多少份数据,现在是通过executor划分的,每个executor一份数据:广播变量用来高效分发较大的对象。向所有工作节点发送一个较大的只读值,以供一个或多个 Spark 操作使用framework框架:工程化代码,整体分为applciantion,controller,service,Dao四部分,再详细分为application: 控制层: 主要用于调度。service: 服务层: 主要用于执行逻辑。dao: 持久层: 主要用于数据交互。application: 应用层: 所有的应用程序从 application 开始启动。common: 用于存放共通类。util: 用于存放工具类。bean: 用于存放实体类。SCALA类里面main方法可以手写也可以继承自Appscala的case用法不会:map{}写法 windows spark 配置1https://blog.csdn.net/l_dsj/article/details/109468288