week 13 总结
Spark 特点
DAG 切分的多阶段计算过程更快速
使用内存存储中间计算更高效;
RDD 的编程模型更简单
案例:WordCount
注意:所有的算子,都是在相同节点内进行的;
reduceByKey
需要进行 shuffle;
先在本地进行 shuffle,再在
RDD
上面的 WordCount 中 textFile 也是一个 RDD
MapReduce 是一种面向过程的编程,RDD 是一种面向对象的编程;
DataFrame 与 RDD 之间的关系是什么呢?!
RDD 上定义了两种函数
转换: transformation,会返回值和 RDD
执行:不再返回 RDD
函数
reduceByKey(func,[numPartitions]): 根据 key 进行聚合,会产生新的 RDD
join(otherDataSet,[numPartitions]):连接数据集
groupByKey([numPartitions]): 分组
作为数据分片
惰性计算:只有进行 shuffle 的时候,才会生成新的 RDD;是否会产生新的 RDD,不仅仅需要根据函数名来判断,还要看是否会产生新的分区;
窄依赖:无 shuffle 依赖,不需要跨分区
宽依赖:shuffle 依赖,需要跨分区
技术判断力
参与开源项目,提升自己的影响力
Spark 的计算阶段
stage 如何划分呢?!
算子
map
union
groupBy
join
一个计算任务会放到一个节点上执行;
Spark 的作业管理
Spark 的执行过程
Spark 生态体系
评论