Spark DataFrame Operations Performance-多个离散操作或一组流水线操作

时间:2018-08-23 15:05:34

标签: scala apache-spark hive apache-spark-sql

我知道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
  1. 这些内容是否会制定出完全不同的计划?特别是3个中的最后两个?

  2. 会有什么区别,特别是在缓存/广播中间数据方面?

  3. 是否有适用于此的最佳实践?

0 个答案:

没有答案