在Spark的RDD源码中创建RDD的时候会赋予RDD一个Id,源码如下
val id: Int = sc.newRddId()
那这个Id是否唯一呢?那就继续深入源码一看究竟
深入进去,可以发现在SparkContext初始化的时候,就会创建一个初始的RDDId,源码如下
private valnextShuffleId= new AtomicInteger(0)
private[spark] def newShuffleId(): Int =nextShuffleId.getAndIncrement()
private valnextRddId= new AtomicInteger(0)
/** Register a new RDD, returning its RDD ID */
private[spark] def newRddId(): Int =nextRddId.getAndIncrement()
private val nextRddId = new AtomicInteger(0)
在每一个SparkContext创建一个以0起始的值,然后在每次获取RDDId的时候都会都会返回当前值并进行+1,起始就是i++,ShuffId的创建也是同理