调度任务
完成导入表映射配置后,需要基于计算源执行调度任务,同时进行ID Mapping计算。调度完成后,计算结果数据将存放在分析源中。
支持三种发起调度的方式:
手动调度:底表更新后,手工发起调度。
周期调度:以日或小时为周期,自动发起调度,适用于底表固定进行周期更新的情况。
触发调度:通过接口发送调度请求,从而发起调度,适用于在底表的加工任务完成后调用接口触发调度。
有一类通过API导入的调度任务,创建者是API同步,其调度方式为周期调度或手动调度。支持查看执行记录,支持其手动调度任务进行手动调度,但不支持其周期调度任务进行手动调度,不支持编辑、移除。
创建调度任务
由于每次调度时都需要对所有数据表涉及的用户重新进行ID Mapping计算,为了避免频繁占用计算资源,建议您将所有数据表的调度创建为同一个任务。
创建手动调度任务
操作步骤:
选择工作空间>配置管理>数据接入管理>数据导入>调度任务。
单击右上角新建调度任务。
在弹窗中填写任务名称,选择要调度导入的数据表,支持多选、全选。
调度频次选择手动调度。
单击保存,完成调度任务创建。
调度任务将加入任务列表,当需要调度时,单击图标,即可手动发起一次调度。
创建周期调度任务
操作步骤:
选择工作空间>配置管理>数据接入管理>数据导入>调度任务。
单击右上角新建调度任务。
在弹窗中填写任务名称,选择要调度导入的数据表,支持多选、全选。
调度频次选择日调度、小时调度,设置相应的执行周期。
单击保存,完成调度任务创建。
调度任务将加入任务列表,自动在指定的周期时间调度。
创建触发调度任务
操作步骤:
选择工作空间>配置管理>数据接入管理>数据导入>调度任务。
单击右上角新建调度任务。
在弹窗中填写任务名称,选择要调度导入的数据表,支持多选、全选。
调度频次选择触发调度,下方将针对每张表生成一个带token的触发地址URL,请您单击复制,保存这些URL。
单击保存,完成调度任务创建。
调度任务将加入任务列表。当您需要调度时,可以通过这些URL发起调度,具体规则为:
在Dataphin、DataWorks或其他ETL工具的底表加工任务中,自行写代码调用此接口,或者通过webhook请求调用此接口。
Dataphin、DataWorks的脚本示例,请参见附录:触发调度脚本示例。
若多张表在同一个调度任务内,需要对每张表都通过对应的URL请求调度一次,当所有表都被触发,调度任务才会执行调度。
在任务列表单击编辑,可以查看各表的触发状态,已通过URL请求调度的表显示为“已触发”。若部分表显示为“未触发”,需要通过该表对应的URL请求调度,当全部表显示为“已触发”时,将开始执行调度。
在任务的调度过程中,再次收到的调度请求将被忽略。
编辑调度任务
单击编辑,可以编辑调度任务,具体操作与创建时相同。从下次调度开始,将按照编辑后的设置执行调度。
手动调度
不仅手动调度可以手动发起调度,周期调度、触发调度也支持手动发起调度。
单击手动调度,即可手动发起一次调度。
查看执行结果
调度任务执行至少一次后,列表将显示最近一次执行的状态(执行成功/执行失败)。
若执行失败,可将鼠标移动到执行失败上方,界面将显示失败原因,帮助您排查问题。
单击执行记录,可以进入执行记录列表,查看该调度任务每一次执行的记录与状态,如下图所示。
单击图标,可展开某次执行调度包含的所有数据表的执行情况。
移除调度任务
选择>移除,确认删除后,将删除该调度任务,但仍保留通过该调度任务获得的数据。
附录:触发调度脚本示例
下面提供Dataphin、DataWorks触发导入调度任务的脚本示例。
Dataphin
在Dataphin通过Shell周期任务触发导入调度任务,步骤如下:
添加沙箱白名单,将创建触发调度任务时生成的所有触发地址URL添加为要访问的IP地址,具体操作请参见Dataphin添加沙箱白名单。
新建Shell周期任务,具体操作请参见新建Shell任务。调度类型选择周期任务
如果同一个调度任务包含多张表,则会生成多个触发地址URL,对应地需创建多个Shell周期任务。
Shell脚本示例如下:
#!/bin/bash # {触发地址URL} 替换为触发地址URL QA_TRIGGER_URL="{触发地址URL}" echo $(date "+%Y-%m-%d %H:%M:%S") "QuickAudience Trigger scheduling Start." echo $(date "+%Y-%m-%d %H:%M:%S") "QuickAudience Trigger scheduling Url:" $QA_TRIGGER_URL result=$(curl -k -s ${QA_TRIGGER_URL}) if [ ! -n "$result" ]; then echo $(date "+%Y-%m-%d %H:%M:%S") "QuickAudience Trigger Failed" $result else echo $(date "+%Y-%m-%d %H:%M:%S") "QuickAudience Trigger scheduling Response:" $result echo $(date "+%Y-%m-%d %H:%M:%S") "QuickAudience Trigger scheduling End." fi
(可选)您可以手动点击执行Shell任务,测试是否能成功触发导入调度任务,观察输出日志中是否有如下成功信息:
QuickAudience Trigger scheduling Response: {"data":"true","errorCode":null,"errorDesc":null,"exStack":null,"opers":[],"solution":null,"success":true,"traceId":"0bc1409e16667784903588235e2ef1"}
进行Shell任务调度配置,具体操作请参见调度配置。
单击新建上游依赖,关联进行当前数据表数据产出的上游依赖。当上游依赖已产出数据,并且到达配置的调度时间时,将触发Shell任务调度。
当导入调度任务的所有触发地址URL对应的Shell任务均已触发时,将触发导入调度任务。
DataWorks
DataWorks支持Shell节点、PyODPS 3节点两种方式触发导入调度任务。
Shell节点
在DataWorks通过Shell节点触发导入调度任务,步骤如下:
由于Shell节点需要使用独享调度资源组进行调度,请参照独享调度资源组进行配置。
否则Shell节点会调度失败,显示如下错误信息:
curl: (1) Protocol https not supported or disabled in libcurl
新建Shell节点,具体操作请参见Shell节点。
如果同一个调度任务包含多张表,则会生成多个触发地址URL,对应地需创建多个Shell节点。
Shell脚本示例如下:
#!/bin/bash # {触发地址URL} 替换为触发地址URL QA_TRIGGER_URL="{触发触发地址URL}" echo $(date "+%Y-%m-%d %H:%M:%S") "QuickAudience Trigger scheduling Start." echo $(date "+%Y-%m-%d %H:%M:%S") "QuickAudience Trigger scheduling Url:" $QA_TRIGGER_URL result=$(curl -k -s ${QA_TRIGGER_URL}) if [ ! -n "$result" ]; then echo $(date "+%Y-%m-%d %H:%M:%S") "QuickAudience Trigger Failed" $result else echo $(date "+%Y-%m-%d %H:%M:%S") "QuickAudience Trigger scheduling Response:" $result echo $(date "+%Y-%m-%d %H:%M:%S") "QuickAudience Trigger scheduling End." fi
(可选)您可以手动点击执行Shell节点,测试是否能成功触发导入调度任务,观察输出日志中是否有如下成功信息:
QuickAudience Trigger scheduling Response: {"data":"true","errorCode":null,"errorDesc":null,"exStack":null,"opers":[],"solution":null,"success":true,"traceId":"0bc1409e16667784903588235e2ef1"}
进行Shell节点调度配置,具体操作请参见配置调度依赖。
如下图所示,新建上游依赖,关联进行当前数据表数据产出的上游节点。当上游节点已产出数据,并且到达配置的调度时间时,将触发Shell节点调度。
当导入调度任务的所有触发地址URL对应的Shell节点均已触发时,将触发导入调度任务。
PyODPS 3节点
在DataWorks通过PyODPS 3节点触发导入调度任务,步骤如下:
PyODPS 3节点可使用公共资源组或独享调度资源组进行调度。
新建PyODPS 3节点,具体操作请参见PyODPS 3节点。
如果同一个调度任务包含多张表,则会生成多个触发地址URL,对应地需创建多个PyODPS 3节点。
Python 3脚本示例如下:
import requests from datetime import datetime # {触发调度的地址} 替换为触发调度的地址 QA_TRIGGER_URL = "{触发调度的地址}" print(datetime.now().strftime("%Y-%m-%d %H:%M:%S") + " QuickAudience Trigger scheduling Start.") print(datetime.now().strftime("%Y-%m-%d %H:%M:%S") + " QuickAudience Trigger scheduling Url:" + QA_TRIGGER_URL) response = requests.get(QA_TRIGGER_URL) print(datetime.now().strftime("%Y-%m-%d %H:%M:%S") + " QuickAudience Trigger scheduling Response:" + response.text) print(datetime.now().strftime("%Y-%m-%d %H:%M:%S") + " QuickAudience Trigger scheduling End.")
(可选)您可以手动点击执行PyODPS 3节点,测试是否能成功触发导入调度任务,观察输出日志中是否有如下成功信息:
QuickAudience Trigger scheduling Response: {"data":"true","errorCode":null,"errorDesc":null,"exStack":null,"opers":[],"solution":null,"success":true,"traceId":"0bc1409e16667784903588235e2ef1"}
进行PyODPS 3节点调度配置,具体操作请参见配置调度依赖。
如下图所示,新建上游依赖,关联进行当前数据表数据产出的上游节点。当上游节点已产出数据,并且到达配置的调度时间时,将触发PyODPS 3节点调度。
当导入调度任务的所有触发地址URL对应的PyODPS 3节点均已触发时,将触发导入调度任务。