本文将为您介绍调度依赖中的常见问题和解决方法。

  • Q:依赖的上游没有解析到父节点ID,提交报错。

    A:该报错并不是指该表不存在,只是在说明该表不是某个节点的本节点输出,无法通过该表去找到产出该表数据的节点,从而与该表节点挂上依赖。

    通过上游节点的本节点输出作为下游节点的本节点输入,根据依赖关系自动解析的原理可知,在SQL中查询xc_demo_partition表,但自动解析时没有通过该表找到上游节点,说明没有一个节点将该表xc_demo_partition作为本节点输出。本节点输出
    您可以通过下述方法解决该问题:
    1. 找到产出该表的节点任务,查看该节点任务的本节点输出。
      如果不知道哪个节点中有操作该表,可以使用代码搜索功能,通过关键字进行模糊查找。模糊查找
    2. 如果是本地上传的表数据或者无需依赖该节点,您可以在代码区单击鼠标右键,选择删除输入删除输入
    删除输入和输出的影响如下:
    • 删除输入的影响:如果您的本节点依赖了一张表的数据,但是该表没有作为本节点的上游。在没有设置依赖关系的情况下,可能出现本节点获取上游数据时,上游表的数据未产出的情况,导致本节点获取数据有误。
    • 删除输出的影响:本节点向某张表写入数据,但是该节点没有将该表作为本节点输出。下游节点获取该表数据,并且将该表自动解析为上游,则提交时报错。报错原因为自动解析时,通过该表没有找到产出该表数据的上游节点,影响自动解析的结果。
    说明 为保证代码血缘的准确性,建议减少使用自定义依赖的次数。
  • Q:自动解析后提交失败,报错依赖的父节点输出projectname.table不存在,不能提交本节点,请先提交父节点。提交失败
    A:出现上述情况有以下两种原因:
    • 上游节点未提交,提交后可以再次尝试。
    • 上游节点已经提交,但上游节点的输出名不是workshop_yanshi.tb_2。
    说明 通常通过自动解析得到的父节点输出名、本节点输出名会根据INSERT、CREATE或FROM后的表名来获取,请确保配置方式与自动解析依赖关系所介绍的方式一致。
  • Q:本节点的输出中,下游节点名称、下游节点ID都是空且不能填写内容?

    A:如果本节点下游无子节点,则无内容。待本节点下游配置子节点后,便会自动解析出内容。

  • Q:节点的输出名称的作用是什么?

    A:节点的输出名称用于建立节点间的依赖关系。假设A节点的输出名称是ABC,而B节点将ABC作为它的输入,这样节点A与节点B之间便建立了上下游关系。

  • Q:一个节点可以有多个输出名称吗?

    A:可以。下游节点引用本节点的任何一个输出名称作为下游节点的父节点输出名称,都将与本节点建立依赖关系。

  • Q:多个节点可以有相同的输出名称吗?

    A:不可以。每个节点的输出名称必须在阿里云账号中是唯一的。如果需要多个节点产出数据至同一张MaxCompute表,则建议通过表名_分区标识区分各节点的输出。

  • Q:使用自动解析依赖关系时,如何不解析到中间表?

    A:右键单击SQL代码中的中间表名,选择删除输入删除输出,再次执行自动解析输入输出即可。

  • Q:最上游任务应如何配置依赖关系?

    A:通常可以选择依赖在本工作空间根节点上。

  • Q:为什么在A节点搜索上游节点输出名时,搜索到了B节点不存在的输出名?

    A:因为搜索功能是基于已经提交的节点信息来进行搜索,如果B节点提交成功后,您又删除了B节点的输出名称且未提交至调度系统,则在A节点上仍然能搜到B节点已删除的输出名。

  • Q:有A、B、C三个任务,如何实现每个小时执行一次A->B->C(A执行完了B再执行,B执行完了C再执行)的任务流程?

    A:将A、B、C的依赖关系设置为A的输出为B的输入,B的输出为C的输入,同时设置A、B、C的调度周期都为小时即可。