在数据帧上执行操作时是否创建了DAG?

时间:2019-01-26 03:40:33

标签: apache-spark dataframe apache-spark-sql rdd directed-acyclic-graphs

我已经看到,每当对RDD执行任何操作时都会生成DAG,但是当我们对数据帧执行操作时会发生什么?

在数据帧上执行多个操作时,是否像RDD一样懒惰地对它们进行求值?

催化剂优化剂何时出现?

我对这些感到困惑。如果任何人都可以对这些话题有所了解,那将真的很有帮助。

谢谢

2 个答案:

答案 0 :(得分:2)

尽管对Dataset进行的每项操作均采用连续处理模式,但仍将其转换为对内部RDDs进行的一系列操作。因此,DAG的概念绝对适用。

通过扩展,执行通常是惰性的,尽管与往常一样,存在例外,并且与纯Dataset API相比,在RDD API中更常见。

最终Catalyst负责将Dataset API调用转换为逻辑的,优化的逻辑和physical执行计划,并最终生成将由任务执行的代码。

答案 1 :(得分:1)

RDD是火花的基础。无论我们使用哪种抽象数据帧或数据集,内部最终计算都是在RDD上完成的。

即-对数据框执行操作时,还会创建DAG。

下面的链接很有帮助 https://medium.com/@thejasbabu/spark-dataframes-10c349de04c

用于催化剂优化程序

enter image description here

您可以点击以下链接获取更多信息 https://subscription.packtpub.com/book/big_data_and_business_intelligence/9781783987061/4/ch04lvl1sec31/understanding-the-catalyst-optimizer