gpt4 book ai didi

apache-spark - Spark阶段交换的意义

转载 作者:行者123 更新时间:2023-12-04 13:57:02 25 4
gpt4 key购买 nike

任何人都可以解释我在 spark DAG 中的 spark 阶段中交换的含义。我的大部分阶段要么以交换开始,要么以交换结束。

1)。 WholeStageCodeGen -> 交换
2)。交换 -> WholeStageCodeGen -> SortAggregate -> 交换

最佳答案

全阶段代码生成是一种受现代编译器启发的技术,可将整个查询折叠为单个函数
在全阶段代码生成之前,每个物理计划都是一个类,其中包含定义执行的代码。通过全阶段代码生成,计划树中的所有物理计划节点协同工作,在单个函数中生成 Java 代码以供执行。然后使用 Janino(一种快速 Java 编译器)将此 Java 代码转换为 JVM 字节码。然后 JVM JIT 开始进一步优化字节码,并最终将它们编译成机器指令。

例如

== Physical Plan ==
*Project [id#27, token#28, token#6]
+- *SortMergeJoin [id#27], [id#5], Inner
:- *Sort [id#27 ASC NULLS FIRST], false, 0
: +- Exchange hashpartitioning(id#27, 200)

无论您在哪里看到 *,都意味着 Wholestagecodegen 在聚合之前已经生成了手写代码。
Exchange 意味着作业之间的 Shuffle Exchange。Exchange 没有整个阶段的代码生成,因为它是通过网络发送数据。

关于apache-spark - Spark阶段交换的意义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45937087/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com