首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >火花阶段的交换意义

火花阶段的交换意义
EN

Stack Overflow用户
提问于 2017-08-29 18:44:38
回答 1查看 6K关注 0票数 8

谁能解释一下我在spark DAG中的spark阶段交换的含义。作为交换,我的大多数阶段要么开始,要么结束。

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

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-08-29 19:13:42

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

例如

代码语言:javascript
运行
复制
== 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)

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

票数 23
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45937087

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档