我有一些Scala代碼,我可以使用spark-submit與Spark一起運行。根據我的理解,Spark會創建一個DAG以安排操作。如何獲得Apache Spark作業的DAG而不運行它?
有沒有辦法在沒有實際執行繁重操作的情況下檢索此DAG只是通過分析代碼?
我想要一個有用的表示,如數據結構或至少一個書面表示,而不是DAG可視化。
我有一些Scala代碼,我可以使用spark-submit與Spark一起運行。根據我的理解,Spark會創建一個DAG以安排操作。如何獲得Apache Spark作業的DAG而不運行它?
有沒有辦法在沒有實際執行繁重操作的情況下檢索此DAG只是通過分析代碼?
我想要一個有用的表示,如數據結構或至少一個書面表示,而不是DAG可視化。
如果您使用的是數據框(spark sql),則可以使用df.explain(true)來獲取計劃和所有操作(優化之前和之後)。
如果您使用rdd,則可以使用rdd.toDebugString獲取字符串表示形式和rdd.dependencies以獲取樹本身。
如果您在沒有實際操作的情況下使用這些操作,您將得到一個表示即將發生的事情,而無需實際執行繁重的操作。
謝謝:)所以沒有什麼類似於數據框的依賴關係? :/ – Quetzakol
在'dependencies'上應用BFS,你會得到(或多或少)你的DAG。 – zero323