2016-08-12 17 views
0

我得到了10 DataFrame s與我想合併成一個DataFrame相同的模式。每個DataFrame都是使用sqlContext.sql("select ... from ...").cahce構建的,這意味着在技術上,DataFrame在使用它們之前並不真正計算。Spark是否並聯UnionAll?

所以,如果我跑:

val df_final = df1.unionAll(df2).unionAll(df3).unionAll(df4) ... 

將星火計算並行所有這些DataFrame S或一個接一個(由於點運算符)?

此外,雖然我們在這裏 - 是否有一個更優雅的方式來執行幾個DataFrame比我上面列出的unionAll

+0

關於最後一部分,請參閱http://stackoverflow.com/a/37612978/1560062。如果它「平行」發生?這取決於你的意思是平行以及可用的資源和數據。 – zero323

+0

@ zero323它發生異步和非阻塞,假設它有足夠的資源來處理它? – shakedzy

+0

我認爲Daniel很回答這個問題:) – zero323

回答

3

unionAll懶惰。您問題中的示例行不會觸發任何計算,即同步或異步。

一般來說Spark是一個分佈式計算系統。每個操作本身都由一組並行處理的任務組成。所以一般來說,您不必擔心兩個操作是否可以並行運行。無論如何,集羣資源將得到很好的利用。