最近在负责Spark Streaming 结合 Spark Sql的相关项目,语言是Java,留下一些笔记,也供大家参考,如有错误,请指教!
理解了这些,和我原先想象是不同的,之前的认知是一个个RDD批量执行,而现在才知道Spark将颗粒度划分到task,从后往前,逐条执行。
划分算法:从后往前,遇到Shuffle就断开,遇到窄依赖就加入,每个 stage 里面 task 的数目由该 stage 最后一个 RDD 中的 partition 个数决定。
每一个小圆就是一条Result,执行过程一目了然。
参考地址:https://github.com/JerryLead/SparkInternals/blob/master/markdown/3-JobPhysicalPlan.md