我得到了10个具有相同模式的DataFrame
,我想将它们组合成一个DataFrame
。每个DataFrame
都是使用sqlContext.sql("select ... from ...").cahce
构建的,这意味着从技术上讲,DataFrame
s直到使用它们时才真正计算出来。
那么,如果我运行:
val df_final = df1.unionAll(df2).unionAll(df3).unionAll(df4) ...
Spark将计算所有这些DataFrame
s并行或一个接一个(由于点运算符)?
而且,当我们在这里时-是否有比我上面列出的更优雅的方法在几个DataFrame
上执行unionAll
?
unionAll
is lazy。问题中的示例行不会触发任何计算,无论是同步的还是异步的。
总的来说,Spark是一个分布式计算系统。每个操作本身都由一堆并行处理的任务组成。所以一般来说你不用担心两个操作是否可以并行运行。无论如何,集群资源将得到充分利用。