本文为您介绍调度参数的相关问题。

调度参数往前取一个小时,如何处理跨天参数替换的问题

  • 问题描述:表分区格式day=yyyymmdd,hour=hh24,且任何执行的时候小时都取上个小时数据,$[yyyymmdd] $[hh24-1/24]是可以满足,但是0点的时候会变成当天的23点,怎么办?
  • 解决办法:您可以修改参数的计算公式,修改datetime$[yyyymmdd-1/24],hour的计算公式仍然是$[hh24-1/24]
    配置:
    • 代码里day=datetime, hour={hour},
    • 节点配置参数赋值 datetime=[yyyymmdd-1/24],hour=[hh24-1/24]
    实时场景:
    • 如果一个实例的定时时间是2021-7-21 00:00:00,减1小时便是昨天,则$[yyyymmdd-1/24]的值是20210720$[hh24-1/24]的值是23
    • 如果一个实例的定时时间为2021-7-21 01:00:00的实例,减1小时还是今天,则$[yyyymmdd-1/24]的值是20210721$[hh24-1/24]的值是00

如何处理表的分区格式年月日时分秒间带空格情况:pt=yyyy-mm-dd hh24:mi:ss

注意 调度参数赋值中不支持带空格。
您可以使用两个自定义变量分别赋值年月日和时分秒,参数 datetime=$[yyyy-mm-dd]hour=$[hh24:mi:ss],分别获取日期和时间后,在代码中用空格拼接为 pt=${datetime} ${hour}调度配置

节点定时时间为每天20:00,节点内参数取值为定时时间($cyctime或者$[yyyymmddhh24miss]),由于上游节点执行异常导致当前节点第二天0:00才调起,这个时候参数取值是20:00还是0:00?

实例的定时时间可以理解为预期状态下实例运行时间,定时时间与实例实际运行时间是可能存在差异的(任务实际运行时,可能会因为等待资源等原因导致实际运行时间与定时时间不一致,实例定时时间是绝对的,不会随着实例的运行时间改变而改变),调度参数这里取的是实例的定时时间,节点调度参数的替换值在实例生成时就已经替换,不会随着实例实际运行时间的改变而改变,所以您无需顾虑调度参数取值是否会变动。

定时时间 定时调度时间

如何配置ODPS Spark节点中的时间参数?

您在创建ODPS Spark节点时,需要在编辑页面配置节点使用的参数,系统会顺序执行。

配置代码中变量后,需要单击编辑页面右侧的 调度配置,在参数面板为上述变量赋值,调度参数使用详情请参见本文内容。 spark任务配置

如何在数据开发测试调度参数?

由于调度参数只有走调度系统才能被自动替换,所以如果您需要在数据开发测试调度参数在调度系统的替换情况,您可以选择开发环境冒烟测试。

说明 由于数据集成任务没有开发环境测试功能,所以如果您需要测试调度参数替换情况,建议您建一个sql节点使用开发环境冒烟测试先测试调度参数,测试符合预期后,再在数据集成节点中使用。

FAILED: ODPS-0130161:[1,84] Parse exception - invalid token '$'

报错原因:调度参数未赋值或赋值出现异常。

解决办法:
  1. 检查是否有给调度参数赋值。
  2. 检查配置的调度参数是否符合要求(详情参考文档:基础属性:调度参数
注意 修改参数配置后记得提交发布,发布后请在生产运维中心周期任务的属性面板查看参数是否是最新的配置。
赋值异常

params format error,please check your params(key=values)

  1. 检查是否为变量赋值
  2. 检查调度参数那是不是多加了空
  3. 节点名中点和中文不能一块使用

time①=②$[yyyymmdd③hh24:mi:ss]time1=$[yyyymmdd]④time2=$[hh24:mi:ss] (①②③④为空格所在位置)。

调度参数的等号(=)两端不可以加空格,即示例中的①②处。

调度参数赋值中不支持空格,即示例中的③处。

两个调度参数间用一个空格分隔,即示例中的④处。

运行,高级运行和开发环境冒烟测试赋值逻辑有什么区别

  • 运行:第一次运行后,您需要手动为该变量赋值常量,第一次赋值会被记录。如果对代码进行修改,该变量依旧使用第一次运行时的赋值。
  • 高级运行:高级运行时,您需要手动为当前代码中的变量进行赋值常量,如果修改了代码中的变量,请使用高级运行给变量重新赋值常量。
  • 开发环境执行冒烟测试:通过手动选择业务日期模拟节点自动调度的场景,获取当前业务日期下调度参数的替换值。
替换调度参数
说明 如果要修改任务执行资源组,请使用”高级运行“。

如何查看生产环境调度参数替换情况?

如果您在数据开发修改了调度参数并且提交发布,请在生产运维中心周期任务属性面板检查调度参数是否符合预期,如果不符合预期,请检查任务发布,发布包界面,是否发布生成功。 周期任务

在周期实例属性面板查看单个实例调度参数替换情况。

注意 单个实例不管是否已经运行过,实例的执行参数会实时更新为生产周期任务最新的参数配置。
实时场景:
  • 节点A当天周期实例A1调度参数time1取值为$bizdate,当天实例已执行成功,代码中参数取值即为bizdate业务时间(具体值)。
  • 在当天某一时间点调度参数time1取值由$bizdate改为$cyctime,那么当天实例执行参数此时会显示为cyctime定时时间(具体值)。
  • 当前实例重跑,会用最新的参数配置:即time1=$cyctime
  • 如果要看调度参数变更前的实例使用的调度参数替换情况,请在日志中查看,详情参考常见问题:如何在日志中查看调度参数替换情况如何通过日志查看当前实例执行时调度参数替换情况?
调度参数替换情况

如何通过日志查看当前实例执行时调度参数替换情况?

在代码中找到SKYNET_PARAVALUE字样。

日志查看调度情况

如何定义调度参数的时区?

夏令时支持现转实例引擎和参数分区计算,在进入和退出夏令时当天能正确运行。以美国西部时间为例,说明如下:
  • 进入夏令时会产生23个实例,当天03:00往前偏移10分钟的结果是01:50。进入夏令时当天定时时间2点的任务会空跑。
  • 退出夏令时会产生24个实例,当天03:00往前偏移10分钟的结果是02:50。

进入夏令时当天的日、周和月调度节点,如果设置的运行时间正好是被跳过的时间段,则当天生成的实例运行时间会是当天的0点整。