問題現象
提交節點時,系統報錯,提示當前節點依賴的父節點輸出名不存在。以上圖為例,出現此類報錯說明,系統無法通過本節點配置的這條父節點輸出名稱的依賴關係,找到產出表xc_ods_user_info_d_133
的上遊節點。
出現此報錯,說明調度依賴配置裡的節點輸出名不存在(即沒有節點將這個節點輸出名配置為本節點的輸出),並不是指表不存在。如果表存在,且由某個節點產出,但是沒有將這個表添加為節點的輸出,也會出現此類報錯。
可能原因1:沒有節點產出這個表
可能原因
出現此種情況的原因之一是:確實沒有節點產出這個表。
對於大部分情境,DataWorks可通過自動解析,自動將產出表添加為節點的本節點的輸出,但是對於非周期性產生的表,不支援使用自動解析。非周期性調度生產資料的表包括:
從本地上傳到DataWorks的表
維表
非DataWorks調度產出的表
手動任務產出的表
當有節點SELECT非周期性調度產生資料的表時,就會出現上述報錯。
解決方案
您需要手動刪除包含非周期性產生資料的表相關的依賴配置。本樣本中,即您需要手動將父節點輸出名稱為
xc_ods_user_info_d_133
的調度依賴配置刪除。手動刪除調度依賴的具體操作可參見配置同周期調度依賴。
可能原因2:有節點產出該表資料,但是該表沒有添加為該節點的輸出
可能原因
出現此種情況的另外一個可能的原因是:有節點產出該表資料,但是該表沒有添加為該節點的輸出。
對於大部分情境,DataWorks可通過自動解析,自動將產出表添加為節點的本節點的輸出,但是對於一些特殊的節點,DataWorks不支援使用自動解析。離線節點、AnalyticDB for PostgreSQL節點、AnalyticDB for MySQL節點、EMR節點不支援通過自動解析添加節點的調度依賴,這些節點的產出表需要手動添加為本節點的輸出。
當有節點SELECT這類節點產生的表,且產出這個表的沒有手動添為節點的產出時,就會出現上述報錯。
解決方案
您需要手動將表添加為產出該表節點的輸出。本樣本中,即您需要手動將
xc_ods_user_info_d_133
添加為產出這個表的本節點輸出。手動添加調度依賴的具體操作可參見配置同周期調度依賴。
為了避免依賴關係配置錯誤導致資料出現問題,DataWorks會在提交節點時對錶資料血緣關係的輸入輸出與調度配置的輸入輸出進行比較,如果不一致會給您提示,詳情可參見提交節點時提示:輸入輸出和代碼血緣分析不匹配。
不是DataWorks每天調度產出的表資料,是不需要設定節點依賴關係的,這類表依賴可以刪除,刪除後提交節點時,會出現血緣關係與調度依賴配置不一致的提示,您可確認一下,是否除了刪除的非周期性產生資料表的依賴關係外,有沒有其他血緣與調度配置不一致的地方,沒有的話可以強制提交節點。
可能原因3:存在同名的節點輸出
可能原因
出現此種情況的另外一個可能的原因是:有多個節點的本節點產出名稱一樣。此原因可能由兩種情境造成:
有多個節點產出了同一張表。
如果有多個節點產出了同一個表,當有節點SELECT這張表時,系統無法找到準確且唯一的產出這張表的節點,提交節點時會出現上述報錯。
同個專案中存在同名的節點。
由於節點建立時,系統會自動為節點添加兩個本節點產出,其中一個名稱命名規則為
projectname.nodename
,如果同一個專案下有兩個同名節點,這兩個節點自動產生的本節點產出名稱一樣,提交會出現上述報錯。
解決方案
需嚴格按照代碼開發規範和介面命名建議進行整改:
一張表由一個節點產出,節點的產出表需添加為本節點的產出。
同專案中的節點命名不重複。
整改後,需確保不存在多個節點的本節點產出名稱相同。