parallelize和makeRDD的函数结构
def parallelize[T: ClassTag](
seq: Seq[T],
numSlices: Int = defaultParallelism): RDD[T] = withScope {
assertNotStopped()
new ParallelCollectionRDD[T](this, seq, numSlices, Map[Int, Seq[String]]())
}
def makeRDD[T: ClassTag](
seq: Seq[T],
numSlices: Int = defaultParallelism): RDD[T]
def makeRDD[T: ClassTag](seq: Seq[(T, Seq[String])]): RDD[T]
第一个makeRDD的实现是依赖于parallelize的实现,两者一致;
第二个makeRDD的实现分配一个本地Scala集合形成一个RDD,为每个集合对象创建一个最佳分区。
总之,makeRDD的使用对后期的优化很有好处。