什么时候创建RDD谱系?如何找到谱系图?

时间:2017-12-07 10:51:02

标签: apache-spark rdd

我正在学习Apache Spark并尝试获取RDD的谱系图。 但我找不到何时创建特定的血统? 另外,在哪里可以找到RDD的血统?

1 个答案:

答案 0 :(得分:2)

RDD Lineage 是每次在任何 RDD上应用转换时创建和扩展的分布式计算的逻辑执行计划。

请注意执行操作后发生的“逻辑”部分而不是“物理”部分。

引用Mastering Apache Spark 2 gitbook:

  

RDD Lineage (又名 RDD运算符图 RDD依赖图)是RDD的所有父RDD的图表。它是将转换应用于RDD并创建逻辑执行计划的结果。

     

因此,RDD沿袭图是调用动作后需要执行的转换的图表。

任何RDD都有RDD谱系,即使这意味着RDD谱系只是一个节点,即RDD本身。这是因为RDD可能是也可能不是一系列转换的结果(并且没有转换是“零效应”转换:))

您可以使用RDD.toDebugString

查看RDD的RDD血统
  

toDebugString:String 此RDD的描述及其用于调试的递归依赖项。

val nums = sc.parallelize(0 to 9)
scala> nums.toDebugString
res0: String = (8) ParallelCollectionRDD[0] at parallelize at <console>:24 []

val doubles = nums.map(_ * 2)
scala> doubles.toDebugString
res1: String =
(8) MapPartitionsRDD[1] at map at <console>:25 []
 |  ParallelCollectionRDD[0] at parallelize at <console>:24 []

val groups = doubles.groupBy(_ < 10)
scala> groups.toDebugString
res2: String =
(8) ShuffledRDD[3] at groupBy at <console>:25 []
 +-(8) MapPartitionsRDD[2] at groupBy at <console>:25 []
    |  MapPartitionsRDD[1] at map at <console>:25 []
    |  ParallelCollectionRDD[0] at parallelize at <console>:24 []