调用循环容器任务

  • 文档创建者:Roxy
  • 历史版本:3
  • 最近更新:Wendy123456 于 2024-06-07
  • 1. 概述

    1.1 应用场景

    使用SparkSQL构建日期列并循环取数 中使用构建的日期序列进行 API 取数。

    如果用户将使用「循环容器」进行 API 取数作为最小调度单位,有多个前置的参数输出、调度期不同的任务可能都会调用执行这个调度单位任务。每次都重复制作任务太过复杂。

    1.2 实现思路

    此时可以使用「调用任务」的方式,将「循环容器」进行 API 取数这个任务作为一个子任务,其他任务直接调用该任务即可,不需要在每个任务里重复制作。

    例如 使用SparkSQL构建日期列并循环取数 2.2 节已经创建好了日期序列,则可以新建一个定时任务作为子任务-循环容器取数。

    2. 操作步骤

    由于被调用任务需要循环执行,而循环容器需要前置输入遍历参数,所以无法直接用已经创建的日期序列参数,需要在新的定时任务中重新设置日期序列参数便于循环容器遍历

    2.1 获取父任务传递的参数

    首先需要参考使用SparkSQL构建日期列并循环取数 2.1 2.2 节构建日期序列。

    然后新建定时任务作为子任务,并新建「数据转换」节点,使用 SparkSQL 算子获取父任务传递的参数,并用函数处理成多行数组,如下图所示:

    注:由于被调用任务没有和调用任务有连线上下游关系,因此预览数据会由于参数无法加载而失效,但不必担心,并不影响实际任务的执行。

    SparkSQL 语句:

    select explode(split('${xunhuanrongqi}'',')) as xunhuanriqi

    将输出值作为参数输出,命名为和使用SparkSQL构建日期列并循环取数 2.2 节日期序列相同的参数,如下图所示:

    2.2 设置循环容器

    参考使用SparkSQL构建日期列并循环取数 2.3 节设置循环容器内的节点,如下图所示:

    2.3 调用任务

    保存子任务后,进入父任务,在使用SparkSQL构建日期列并循环取数 2.2 节生成的日期序列后新建「调用任务」节点,选择创建好的子任务作为调用任务,由于子任务需要使用日期序列参数,因此勾选「将当前任务的参数传递给子任务」,并选择日期序列参数,如下图所示:

    设置完成后即可执行任务。

    2.3 效果查看

    运行任务,可以看到根据日期序列取出 API 中每天的数据,同时通知每次循环的情况,如下图所示:

    1717729187271151.png


    附件列表


    主题: 数据开发-定时任务
    • 有帮助
    • 没帮助
    • 只是浏览
    • 评价文档,奖励 1 ~ 100 随机 F 豆!