如何解决spark是逐行还是一起执行转换?
我正在尝试了解spark,并在df=df.join(df2,"ID");
df4=df4.join(df3,"ID");
df=df.union(df4);
long count=df.count();
services.AddSingleton<HtmlEncoder>(
HtmlEncoder.Create(allowedRanges: new[] { UnicodeRanges.BasicLatin,UnicodeRanges.Arabic }));
我的问题是转型如何发生?在上面的示例中,联合是否等待两个联接完全完成 (即完成所有行的联接)然后启动联合?还是以流水线方式逐行进行,一旦完成对一行的连接,就开始在其上进行联合转换(即使其他行的连接仍在进行)?
我尝试对此进行搜索,但找不到任何答案。
解决方法
使用explain()
查看会发生什么情况。
df.explain()
== Physical Plan ==
Union
:- *(5) Project [ID#3599L,VALUE#3600,VALUE#3604]
: +- *(5) SortMergeJoin [ID#3599L],[ID#3603L],Inner
: :- *(2) Sort [ID#3599L ASC NULLS FIRST],false,0
: : +- Exchange hashpartitioning(ID#3599L,200),true,[id=#1332]
: : +- *(1) Filter isnotnull(ID#3599L)
: : +- *(1) Scan ExistingRDD[ID#3599L,VALUE#3600]
: +- *(4) Sort [ID#3603L ASC NULLS FIRST],0
: +- ReusedExchange [ID#3603L,VALUE#3604],Exchange hashpartitioning(ID#3599L,[id=#1332]
+- *(10) Project [ID#3599L,VALUE#3609]
+- *(10) SortMergeJoin [ID#3599L],[ID#3608L],Inner
:- *(7) Sort [ID#3599L ASC NULLS FIRST],0
: +- ReusedExchange [ID#3599L,VALUE#3600],[id=#1332]
+- *(9) Sort [ID#3608L ASC NULLS FIRST],0
+- ReusedExchange [ID#3608L,VALUE#3609],[id=#1332]
排序,排序合并,项目和联合。当您采取诸如count()
之类的操作时会发生这种情况,在此之前,spark只会计划如何进行操作。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。