当我们对数据帧执行操作时会创建 DAG 吗?

Posted

技术标签:

【中文标题】当我们对数据帧执行操作时会创建 DAG 吗?【英文标题】:Is DAG created when we perform operations over dataframes? 【发布时间】:2019-01-26 03:40:32 【问题描述】:

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

对数据帧执行多个操作时,那些懒惰的评估就像RDD一样吗?

催化剂优化器何时出现?

我对这些有点困惑。如果有人能对这些主题有所了解,那将是非常有帮助的。

谢谢

【问题讨论】:

【参考方案1】:

Dataset 上的每个操作,尽管有连续处理模式,都被转换为内部RDDs 上的一系列操作。因此 DAG 的概念是绝对适用的。

通过扩展,执行主要是惰性的,尽管始终存在异常,并且与纯 RDD API 相比,在 Dataset API 中更常见。

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

【讨论】:

【参考方案2】:

RDD 是 spark 的构建块。无论我们使用哪个抽象 Dataframe 或 Dataset,内部最终计算都是在 RDD 上完成的。

即 - 当您对 Dataframes 执行操作时,DAG 也会创建。

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

催化剂优化器

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

【讨论】:

以上是关于当我们对数据帧执行操作时会创建 DAG 吗?的主要内容,如果未能解决你的问题,请参考以下文章

python中的帧类型

理解js运行时的一些概念

JVM总结

java虚拟机--运行时数据区

java内存模型

Java 核心技术 - JVM