何时创建 RDD 沿袭?如何找到谱系图?
Posted
技术标签:
【中文标题】何时创建 RDD 沿袭?如何找到谱系图?【英文标题】:When does a RDD lineage is created? How to find lineage graph? 【发布时间】:2017-12-07 10:51:02 【问题描述】:我正在学习 Apache Spark 并尝试获取 RDD 的沿袭图。 但我找不到特定谱系何时创建? 另外,在哪里可以找到 RDD 的血统?
【问题讨论】:
【参考方案1】:RDD 沿袭 是 分布式计算的逻辑执行计划,每次您在任何 RDD 上应用转换时都会创建和扩展该计算。
注意执行操作后发生的“逻辑”而非“物理”部分。
引用Mastering Apache Spark 2gitbook:
RDD Lineage(又名RDD 算子图 或RDD 依赖图)是一个RDD 的所有父RDD 的图。它是通过对 RDD 应用转换并创建逻辑执行计划而构建的。
因此,RDD 沿袭图是在调用操作后需要执行哪些转换的图。
任何 RDD 都有一个 RDD lineage,即使这意味着 RDD lineage 只是单个节点,即 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 []
【讨论】:
以上是关于何时创建 RDD 沿袭?如何找到谱系图?的主要内容,如果未能解决你的问题,请参考以下文章