我有以下結構化查詢:將持續數據幀重複計算多次?
val A = 'load somedata from HDFS'.persist(StorageLevel.MEMORY_AND_DISK_SER)
val B = A.filter('condition 1')
val C = A.filter('condition 2')
val D = A.filter('condition 3')
val E = A.filter('condition 4')
val F = A.filter('condition 5')
val G = A.filter('condition 6')
val H = A.filter('condition 7')
val I = B.union(C).union(D).union(E).union(F).union(G).union(H)
我堅持數據幀A,使得當我使用B/C/d/E/F/G/H時,A數據幀應當只計算一旦?但是,這項工作的DAG低於:
從上面的DAG,似乎階段6-12的所有執行和數據幀A被計算的7倍?
爲什麼會發生這種情況?
也許DAG只是假的?我發現階段7-12的頂部沒有行,其中階段6確實有兩行來自其他階段
我沒有列出所有的操作。在union
操作之後,我將I
數據幀保存到HDFS。對I
數據幀執行此操作會使持久操作真的完成嗎?或者我必須在A
數據幀上執行動作操作(例如count
)以在重新使用A
數據幀之前觸發持久操作?
數據框是否像維護數據庫一樣維護數據行? – BDR