apache-spark - Spark Transformation - 为什么它是懒惰的,有什么优势?

标签 apache-spark transformation lazy-evaluation

Spark Transformations被懒惰地评估 - 当我们调用 Action 时,它会根据谱系图执行所有转换。
懒惰地评估转换有什么好处?
它会改善performance和更少的memory consumption与热切评价相比?
懒惰地评估转换有什么缺点吗?

最佳答案

对于转换,Spark 将它们添加到计算的 DAG 中,并且只有当驱动程序请求一些数据时,该 DAG 才会真正执行。

这样做的一个好处是,Spark 可以在有机会全面查看 DAG 之后做出许多优化决策。如果它一得到它就执行一切,这是不可能的。

例如——如果你急切地执行每一个转换,那意味着什么?嗯,这意味着你必须在内存中实现那么多中间数据集。这显然效率不高——一方面,它会增加你的 GC 成本。 (因为你真的对这些中间结果不感兴趣。这些只是你在编写程序时方便的抽象。)所以,你要做的是——你告诉 Spark 你感兴趣的最终答案是什么,并且它找出了到达那里的最佳方式。

关于apache-spark - Spark Transformation - 为什么它是懒惰的,有什么优势?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38027877/

相关文章:

log4j - 如何摆脱 "Using Spark' s 默认 log4j 配置文件 : org/apache/spark/log4j-defaults. 属性”消息?

javascript - 相对于线段平移坐标

javascript - jQuery 元素自由旋转。在 IE 中更正 Transform Origin 和 Translate

jQuery 脚本将匹配元素的属性移动到其子元素

java - Java 8 中日志记录的惰性评估

python - Pyspark:扩展 pyspark 数据框添加缺失的周期

scala - 如何使用累加器对leftOuterJoin中没有匹配项的记录进行计数?

Scala - 懒惰地对有序迭代器进行分组

scala - 如何强制执行惰性值计算

apache-spark - 如何优化将 150GB 数据加载到配置单元表中?