问题描述
在保存节点的时候,遇到了如下报错 “有下游节点依赖本节点的输出 xxx,禁止删除 “该如何处理?
问题分析
这个问题很典型,是因为上游任务修改了本节点的输出,导致下游任务挂依赖的时候,可能会存在依赖丢失的风险,所以DataWorks校验的时候,阻止了本次修改的保存。
问题出现的场景给大家解析一下。
上游节点的代码如下:
create table dw_demo (id BIGINT ,name STRING );
INSERT into TABLE dw_demo SELECT 1,'pengmin' from dual;
下游节点的代码如下:
SELECT * from dw_demo ;
在DataWorks上调度运行的时候,很明显,下游节点依赖了上游节点输出的表数据,当我们把上游节点输出删除的时候,那么就会出现保存失败的情况。
问题解法
由于导致问题的原因是上游节点的输出被修改了,导致下游节点的依赖挂不上,那么要解决这个问题,只能修改下游节点的依赖关系,使其不依赖上游的输出表。
切记:删除输入以后,需要去自动解析哪里,重新解析一下输入输出。然后提交节点,再去保存上游。
当下游节点修改了依赖关系后,保存上游节点,显示保存成功,此问题就解决了。
小贴士
如何找到下游节点是解决这个问题的关键,有时候下游节点没有提交,我们无法直接找到下游节点,那么就需要使用一点小技巧。
提供一个思路:充分利用代码全局搜索功能,找到与这个表有关的任务,然后查看那些任务依赖了这个表。
根据查询出来的结果,找到具体引用的任务,选择删除输入,重新解析,保存提交即可。