有人能澄清RDD血统和DAG(直接无环图)之间的区别和相似之处吗?
sc4hvdpw1#
DAG(直接无环图)是Spark执行程序的方式的表示,该图上的每个顶点都是一个单独的操作,边表示每个操作的依赖关系。您的程序(即表示它的DAG)可以在多个实体(RDD、Dataframes等)上运行。RDD Lineage只是导致创建特定RDD的DAG(一个或多个操作)的一部分。
因此,一个DAG(一个Spark程序)可能会创建多个RDD,每个RDD都有它的血统(即DAG中通向该RDD的路径)。如果RDD的某些分区损坏或丢失,Spark可能会重新运行DAG的那部分,从而创建这些分区。如果Spark程序的唯一目的是创建一个RDD,并且这是最后一步,那么整个DAG就是该RDD的一个血统。您可以在这里找到更多信息-https://data-flair.training/blogs/rdd-lineage/
iyfjxgzm2#
简单来说,Lineage:逻辑计划从一个RDD派生出另一个RDD,它是转换的结果。DAG:作为RDD https://ch-nabarun.medium.com/few-spark-concepts-35d2aa026e28操作的结果而执行的物理计划
lvjbypge3#
每当我们创建一个dataframe或Spark SQL或HIVE查询时,spark都会i.生成未解析逻辑计划 *。ii.然后,它将应用分析规则和模式目录来转换为已解析的逻辑计划。这是怎么回事了解数据集的来源和列的类型。iii.优化规则将最终创建优化逻辑计划。上述3个步骤属于Catalyst Optimizer,负责优化逻辑计划。在这里,逻辑计划只不过是血统。每当一个动作被调用时,这个谱系将被转换为DAG,基本上是一个物理计划。
3条答案
按热度按时间sc4hvdpw1#
DAG(直接无环图)是Spark执行程序的方式的表示,该图上的每个顶点都是一个单独的操作,边表示每个操作的依赖关系。您的程序(即表示它的DAG)可以在多个实体(RDD、Dataframes等)上运行。RDD Lineage只是导致创建特定RDD的DAG(一个或多个操作)的一部分。
因此,一个DAG(一个Spark程序)可能会创建多个RDD,每个RDD都有它的血统(即DAG中通向该RDD的路径)。如果RDD的某些分区损坏或丢失,Spark可能会重新运行DAG的那部分,从而创建这些分区。
如果Spark程序的唯一目的是创建一个RDD,并且这是最后一步,那么整个DAG就是该RDD的一个血统。
您可以在这里找到更多信息-https://data-flair.training/blogs/rdd-lineage/
iyfjxgzm2#
简单来说,Lineage:逻辑计划从一个RDD派生出另一个RDD,它是转换的结果。DAG:作为RDD https://ch-nabarun.medium.com/few-spark-concepts-35d2aa026e28操作的结果而执行的物理计划
lvjbypge3#
每当我们创建一个dataframe或Spark SQL或HIVE查询时,spark都会
i.生成未解析逻辑计划 *。
ii.然后,它将应用分析规则和模式目录来转换为已解析的逻辑计划。
这是怎么回事了解数据集的来源和列的类型。
iii.优化规则将最终创建优化逻辑计划。
上述3个步骤属于Catalyst Optimizer,负责优化逻辑计划。
在这里,逻辑计划只不过是血统。每当一个动作被调用时,这个谱系将被转换为DAG,基本上是一个物理计划。