我知道SQL语句基本上可以分解为API使用的相同Spark调用,例如“ const mapDispatchToProps = dispatch => (
bindActionCreators({ firstAction }, dispatch)
);
”对“ select * from my_data_frame1 inner join my_data_frame2 on id1 = id2
”有效。如果我错了或有细微差别,请纠正我。
我的问题是:
假设我要从2组2个表中分别获取数据,例如内部客户,外部客户,内部地址,外部地址和电话号码,希望将它们放在一起,这样所有人都可以,并且他们的地址和电话号码变得平坦。
通过SQL和直接在Spark数据框api调用中进行这种操作的性能含义是什么?尤其是执行union <> join vs join <> union,并具有单独的步骤而不需要没有中间数据帧/表?
my_data_frame1.join(my_data_frame2,col(id1)===col(id2),"inner")
vs
A = internal clients join internal addresses
B = external clients join external addresses
final = A union B join phone numbers
vs
final = (internal clients union external clients)
join (internal addresses union external addresses)
join phone numbers
这些内容是否会制定出完全不同的计划?特别是3个中的最后两个?
会有什么区别,特别是在缓存/广播中间数据方面?
是否有适用于此的最佳实践?