1.通过explain可以清晰的看到stage划分。常见的是各个算子(join groupby orderby 等有shuffle)或者是一些filter where等。
2.基于上面的1就可以划分出stage。但是有些stage并不会执行,或者说经过优化器后的filter where会在其他stage里进行。这样,有些stage就是空的stage。
3.基于stage划分,如何确定job数量(总数就是stage数量)。主要是看哪些stage会执行。只有需要执行的stage才会提交yarn,生成具体的job application ,在日志里就可以看到有很多job并没有执行。