RDD Lineage (aka RDD operator graph or RDD dependency graph) actually is a graph of all the parent RDDs of an RDD. It is built as a consequence of applying transformations to the RDD and creates a logical execution plan.
The execution DAG or physical execution plan is that the DAG of stages.
The above diagram represents the RDD lineage
The above RDD graph could be the result of the following series of transformations:
val r00 = sc.parallelize(0 to 9)
val r01 = sc.parallelize(0 to 90 by 10)
val r10 = r00 cartesian r01
val r11 = r00.map(n => (n, n))
val r12 = r00 zip r01
val r13 = r01.keyBy(_ / 20)
val r20 = Seq(r11, r12, r13).foldLeft(r10)(_ union _)
An RDD lineage graph is hence a graph of what transformations got to be executed after an action has been called.
You can study the RDD lineage graph using RDD.toDebugString method.