问题现象

提交节点时,系统出现提示:输入输出和代码血缘分析不匹配。 血缘检查

可能原因

当代码中SELECT的表与节点的依赖的父节点配置不一致,或代码中INSERT、CREATE的表与节点的本节点的输出不一致时,会出现该提示。

以上图为例,说明:
  • 您提交的节点代码中有SELECT名称为table2的数据,但是table2并没有配置为节点的依赖的父节点。
  • 您提交的节点中有将doc_test配置为节点的本节点的输出,但是节点代码中并没有INSERT或CREATE名称为doc_test的表。

解决方案

您需要仔细检查表数据的血缘关系与调度依赖配置是否正确。原则上除了非周期性生成数据的表需要删除节点输出,可能会存在血缘与调度配置不一致的场景外,其他大部分场景表数据的血缘关系与调度依赖关系应该保持一致。

如果您不检查直接强制提交节点,可能会导致以下影响:
  • 例如,代码中SELECT一张表A,并且表A是个调度节点每天定时产出的表(即表A不是非周期性生成数据的表),如果没有将表A添加为本节点的依赖的父节点,形成依赖关系的时,某次生成表A的节点没有执行成功的话,下游节点取表A的数据即取用的表A上一次运行结果的数据,可能会有问题。
  • 例如,在代码中CREATE或INSERT一张表B,没有将表B作为本节点的输出,则如果有节点SElECT表B,自动解析会自动将表B作为节点的输入,形成依赖关系,但是系统无法通过这个依赖关系找到产出表B的节点,提交节点时会报错:当前节点依赖的父节点输出名不存在。详情可参见提交节点报错:当前节点依赖的父节点输出名不存在