我的代码:
scala> val records = List( "CHN|2", "CHN|3" , "BNG|2","BNG|65")
records: List[String] = List(CHN|2, CHN|3, BNG|2, BNG|65)
scala> val recordsRDD = sc.parallelize(records)
recordsRDD: org.apache.spark.rdd.RDD[String] = ParallelCollectionRDD[119] at parallelize at <console>:23
scala> val mapRDD = recordsRDD.map(elem => elem.split("\\|"))
mapRDD: org.apache.spark.rdd.RDD[Array[String]] = MapPartitionsRDD[120] at map at <console>:25
scala> val keyvalueRDD = mapRDD.map(elem => (elem(0),elem(1)))
keyvalueRDD: org.apache.spark.rdd.RDD[(String, String)] = MapPartitionsRDD[121] at map at <console>:27
scala> keyvalueRDD.count
res12: Long = 5
如上所示,创建了3个RDD。
我的问题是DAG何时被创建以及DAG包含什么?
使用任何转换创建RDD时是否会创建它?
或
当我们在现有RDD上调用Action然后spark会自动启动DAG时会创建吗?
基本上我想知道在创建RDD时内部会发生什么?
答案 0 :(得分:0)
在执行作业时(当您调用操作时)创建DAG,并且它包含分布式任务所需的所有依赖项。
未执行DAG。基于DAG Spark确定分配给工人并执行的任务。
RDD单独通过遍历递归依赖来定义谱系。