有人可以区分 RDD 沿袭和 DAG(直接无环图)吗?

Can someone distinguish between RDD Lineage and a DAG (Direct Acyclic Graph)?

有人可以阐明 RDD 沿袭与 DAG(有向无环图)之间的异同吗?

DAG(有向无环图)表示 Spark 执行程序的方式 - 该图上的每个顶点都是一个单独的操作,边表示每个操作的依赖关系。您的程序(因此代表它的 DAG)可以在多个实体(RDD、Dataframes 等)上运行。 RDD 沿袭 只是导致创建特定 RDD 的 DAG(一个或多个操作)的一部分。

因此,一个 DAG(一个 Spark 程序)可能会创建多个 RDD,并且每个 RDD 都有其沿袭(即 DAG 中通向该 RDD 的路径)。如果您的 RDD 的某些分区损坏或丢失,那么 Spark 可能会重新运行导致创建这些分区的那部分 DAG。

如果您的 Spark 程序的唯一目的是只创建一个 RDD,并且这是最后一步,那么整个 DAG 就是该 RDD 的沿袭。

您可以在这里找到更多信息 - https://data-flair.training/blogs/rdd-lineage/

简单来说 血统:从一个RDD派生出另一个RDD的逻辑计划,它是转换的结果。 DAG:将作为对 RDD

的操作的结果而执行的物理计划