何时在火花中创建DAG



我的代码:

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的操作时,它会创建它,然后Spark自动启动DAG?

基本上我想知道创建RDD时内部会发生什么?

  • 在执行作业时(调用操作时)创建DAG,并且包含分布式任务的所有必需依赖项。

  • 未执行DAG。基于DAG Spark确定分配给工人并执行的任务。

  • rdd仅通过递归依赖性来定义谱系。

最新更新