我在這裏坦率地說虧本。我有一個任務,始終執行隻是非常。今天早上我花了一些時間來調試它和物理顯示238 tib的洗牌計劃:
物理計劃= = = = AdaptiveSparkPlan(40) + - = = = =當前計劃SerializeFromObject (22) + - MapPartitions (21) + - DeserializeToObject項目(19)(20)+ - + - ObjectHashAggregate(18) + -交換(17)+ ObjectHashAggregate (16) + - ObjectHashAggregate (15) + - ShuffleQueryStage(14),統計(sizeInBytes = 238.0 TiB) + -交換(13)+ ObjectHashAggregate項目(11)(12)+ - * + - CartesianProduct內(10):- *項目(5):+ - *過濾器(4):+ - *項目(3):+ - * ColumnarToRow(2): + -掃描拚花(1)+ - *(9)+ - *項目(8)+ - * ColumnarToRow(7) + -掃描拚花(6)
我能理解這個數字如果我是處理大量的數據。我不是。這個查詢的笛卡兒積產生125行如下所示,所以不是我的合並邏輯
此外,輸出表也不是很大;這是15個文件沒有大於10 mb的文件(注意:我肯定能做一些實現更好的設置,但這是另一個故事)。
我覺得我的智慧與這個問題。任何想法,我們將不勝感激。
我真的想知道它不是一個詭計的邏輯合並在這一點上。
我試著運行一個輸出文件之間的連接,這將是我的MERGE語句的輸入。我發表了一篇解釋查詢和創建BroadcastNestedLoopJoin最終。很多情況下,嵌套循環聯接困擾我的性能。我要試試分裂合並的兩個單獨的電話,看看對我起作用的。
這可能是解釋的合並不顯示這個,因為合並是如何執行的。