我試圖對3個DataFrame運行一系列轉換。每次轉換後,我想保留DF並將其保存到文本文件中。我正在做的步驟如下。在轉換工作流程中堅持DataFrame
Step0:
創建DF1
創建DF2
創建DF3
創建DF4
(不堅持沒有保存至今)
第一步:
通過加入DF1創建RESULT-DF1和DF2
堅持它到磁盤和內存
保存爲文本文件
第二步:
通過接合結果,DF1和DF3創建結果,DF2
其保存到磁盤和內存
保存爲文本文件
第三步:
通過接合結果,DF2和DF4創建成果的DF3
其保存到磁盤和內存
保存爲文本文件
觀察:
在第一步創建的任務數是601
在步驟2中創建的任務數是在第三步創建的任務的1004(沒有跳過任何東西)
號是1400(跳過400任務)
作爲不同的方法,我將上述步驟分爲三個不同的步驟。即;
- 開始,負載DF1和DF2,難道第一步,保存結果,DF1 &出口
- 開始,負載DF3,加載結果-DF1從文件時,請第二步,保存結果,DF2 &出口
- 開始,從文件加載DF4,加載結果,DF2,做第三步,保存結果,DF3 &出口
後一種方法的運行速度更快。
我的問題是:
我在第一種方法的持久性方面失去了一些東西?
爲什麼Step2的運行不僅僅是使用Step1的結果,即使在持久化之後也沒有重做所有的任務(只有601個任務而不是1004)?
在實施這樣一系列轉換工作流程時,對最佳實踐有什麼好的解讀?
你如何持續DataFrames,以及如何加入他們。請分享代碼。 –
我試過這種情況,並得到了這種行爲的原因。你能給我提供以下細節:1)羣集內存和2)用於創建DF1,DF2,DF3的文件大小 –
它是一個4 + 1羣集。所有五個節點都有32 GB。四位執行者。提供20 GB作爲執行程序內存和20 GB作爲驅動程序內存。數據大小爲每個源大約50到75 GB。 –