理解概念
持久化:落实数据,可以在内存或者磁盘中
RDD 算子分类: transaction算子、Action算子。
执行流程大概理解:其中 transaction算子会在执行的时候保存执行顺序,只有当 使用 行为算子的时候,才会触发整个算子流程的执行(本质是当 Action算子调用的时候再回触发底层的提交 Job 任务)
开始分析
问题:假如我现在有一个 oldRDD对象,计划对这个对象进行 map几次之后得到一个 newRDD 对象,我想对这个 newRDD 对象进行两次 Action 算子
阅读一下程序:
@Test
def test01(): Unit = {
val oldRDD = sc.makeRDD(1 to 2)
val newRDD = oldRDD
.map(_.toString + "[" + System.currentTimeMillis() + "]")
newRDD.foreach(println)
newRDD.foreach(println)
}
输出结果:
2[1588059493903]
1[1588059493907]
1[1588059494231]
2[1588059494243]
分析:
在这个程序中,map 执行了几次?