我們有兩個數據幀df1
和df2
並且正在對df2執行轉換。在df2完成所有轉換之後,我們需要在df2中追加df1。爲此,我們使用unionAll函數。DAG調度程序在使用unionALL時重複處理階段
val v_asciiFileWithHeader = v_header.unionAll(vr_dataframeAsciiFile)
但unionAll
後,當我們打印了它的DAG,其重複所有的處理階段又由於其所有的處理完成兩次當一個動作被調用。
如果我們在應用unionAll
之前堅持df2,那麼所有的處理階段都不會重複。
作爲參考,已附着在DAG爲數據幀unionAll
前,後UnionAll(without persisting df2)
,後unionAll(with persisting df2)
當上是非持久的數據幀被施加unionAll
重複那麼,爲什麼處理階段。
火花版本 - 1.6.1 斯卡拉版 - 2.10.6
處理部分'df2'是否包含任何操作或僅包含轉換? – code
@code之前它只有轉換。但爲了堅持,我們添加了一個動作,即df2.count –
此前還有df2轉換被執行了兩次? – code