触发式节点开发说明

在构建数据系统时,如果存在多个平台同时开发且不同平台间的任务存在依赖关系,您可以通过触发式节点完成依赖配置。例如,算法开发在A系统,在Dataphin中需要基于A系统某个算法任务的产出来运行某个周期任务。本文将介绍触发式节点开发的相关说明。

前提条件

使用外部触发节点,需要满足以下前提条件:

  • 已开通Dataphin OpenAPI功能。

  • 发起触发请求的环境与Dataphin必须网络可连通。

触发式节点任务基本特点

触发式节点任务与其他计算任务相同点与不同点如下:

  • 触发式节点任务的周期实例进入运行状态需要满足以下条件:

    1. 当前系统时间大于或等于实例的定时运行时间,与其他计算任务一致。

    2. 所有上游节点运行状态均已成功,与其他计算任务一致。

    3. 已收到外部触发请求,此为触发式节点独有的运行条件。

  • 触发式节点任务的补数据实例,不依赖外部触发请求,与普通计算任务一致。

触发方式

Dataphin当前仅支持通过OpenAPI方式在Dataphin之外发送触发请求,即外部触发。

外部触发

外部触发步骤如下:

  1. 获取触发信息。

    通过外部触发请求前,需要先获取以下信息。

    • 节点ID(node_id):可以在已提交的触发式节点任务属性面板的基本信息区域获取任务ID。如下图所示:

      image

    • 项目ID(project_id):可以在研发页面的浏览器URL中获取。例如,URL地址为https://www.aliyun.com/dev/codeManage/698348****632?env=DEV&projectId=6982117****30048&tenantId=3091070126982117****30048即为项目ID。

    • 租户IDtenant_id):可以在研发页面的浏览器URL中获取。例如,URL地址为https://www.aliyun.com/dev/codeManage/698348****632?env=DEV&projectId=6982117****30048&tenantId=309***012309***012即为租户ID。

  2. 编写触发节点代码。

    本文以Java代码为例。

    重要

    代码中所需要的Jar包,您可以通过阿里云相关技术支持人员进行获取。

    package sample;
    
    import com.aliyuncs.dataphin.DataphinAcsClient;
    import com.aliyuncs.dataphin.model.v20200830.sop.node.RunTriggerNodeRequest;
    import com.aliyuncs.dataphin.model.v20200830.sop.node.RunTriggerNodeResponse;
    import com.aliyuncs.exceptions.ClientException;
    
    public class RunTriggerNodeTest {
        
        public static void main(String[] args) throws ClientException {
            DataphinAcsClient client = DataphinAcsClient.create("<Your region>", "<Your openapi endpoint>", "<Dataphin accessKey>", "<Dataphin secret>");
    
            RunTriggerNodeRequest runTriggerNodeRequest = new RunTriggerNodeRequest();
    
            // 设置需要触发的节点的节点ID。
            runTriggerNodeRequest.setNodeId("<node_id>");
          
            // 设置需要触发的周期实例对应的业务日期,格式为yyyy-MM-dd。
            runTriggerNodeRequest.setBizDate("<bizdate>");
          
            // 设置需要触发的节点所在项目的项目ID。
            runTriggerNodeRequest.setProjectId(<project_id>);
          
            // 设置环境类型,建议保持 PROD(生产环境)不变。
            runTriggerNodeRequest.setEnv("PROD");
          
            // 设置需要触发的节点所在租户的租户ID。
            runTriggerNodeRequest.setOpTenantId(<tenant_id>);
    
            RunTriggerNodeResponse runTriggerNodeResponse = client.getAcsResponse(runTriggerNodeRequest);
            System.out.println(runTriggerNodeResponse.getCode());
        }
    }
  3. 执行触发节点代码成功且Dataphin收到后触发请求后,触发式节点运行状态将转变为成功