sparkDataframe操作性能-多个离散操作或单个流水线操作集

fjnneemd  于 2021-06-26  发布在  Hive
关注(0)|答案(0)|浏览(173)

我知道sql语句基本上被分解为api使用的相同spark调用,例如 select * from my_data_frame1 inner join my_data_frame2 on id1 = id2 “锻炼到” my_data_frame1.join(my_data_frame2,col(id1)===col(id2),"inner") ". 如果我错了或有细微差别,请纠正我。
我的问题是:
假设我想从两组表中获取数据,每个表有两个表,例如内部客户机、外部客户机、内部地址、外部地址和电话号码,并希望将它们放在一起,这样就可以将每个人及其地址和电话号码放平。
通过sql和直接在sparkDataframeapi调用中执行这类操作对性能有何影响?尤其是联合<>连接vs联合<>联合,以及有单独的步骤vs没有中间Dataframe/表?

A = internal clients join internal addresses
B = external clients join external addresses
final = A union B join phone numbers

final = (internal clients union external clients) 
join (internal addresses union external addresses)
join phone numbers

A = internal clients union external clients
B = internal addresses union external addresses
C = A join B join phone numbers

这些计划会有实质性的不同吗?尤其是最后两个?
有什么区别,特别是缓存/广播中间数据?
是否有适用于此的最佳实践?

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题