我有10个DataFrame
s使用相同的架构,我想将其合并为一个DataFrame
。每个DataFrame
都是使用sqlContext.sql("select ... from ...").cahce
构建的,这意味着从技术上讲,DataFrame
s在使用它们之前并未真正计算出来。
所以,如果我跑:
val df_final = df1.unionAll(df2).unionAll(df3).unionAll(df4) ...
Spark会并行或逐个计算所有这些DataFrame
(由于点运算符)?
而且,虽然我们在这里 - 是否有更优雅的方式在几个unionAll
上预先形成DataFrame
而不是我上面列出的那个?
答案 0 :(得分:3)
unionAll
lazy 。您问题中的示例行不会触发任何计算,同步或异步。
通常,Spark是一个分布式计算系统。每个操作本身都由一系列并行处理的任务组成。因此,通常您不必担心两个操作是否可以并行运行。无论如何,集群资源将得到充分利用。