我已经看到,每当对RDD执行任何操作时都会生成DAG,但是当我们对数据帧执行操作时会发生什么?
在数据帧上执行多个操作时,是否像RDD一样懒惰地对它们进行求值?
催化剂优化剂何时出现?
我对这些感到困惑。如果任何人都可以对这些话题有所了解,那将真的很有帮助。
谢谢
答案 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
用于催化剂优化程序
您可以点击以下链接获取更多信息 https://subscription.packtpub.com/book/big_data_and_business_intelligence/9781783987061/4/ch04lvl1sec31/understanding-the-catalyst-optimizer