本文介绍 DataLeap New IDE 的调度类型、周期调度 Cron 配置、调度优先级与生效时间管理。
NewIDE 支持三种触发方式,在 Pipeline 配置文件的 trigger 字段中定义:
触发类型 | YAML 值 | 说明 |
|---|---|---|
周期调度 |
| 按 Cron 表达式自动周期执行。 |
手动触发 |
| 用户在界面或 CLI 中手动执行。 |
外部触发 |
| 由外部系统通过 API 调用触发。 |
系统按 Cron 表达式自动生成实例并执行。适用于固定频率运行的 ETL、报表生成等场景。
trigger: type: scheduled cronExpression: expression: "0 2 * * *" # 每天 02:00 effectiveTime: "2026-01-01T00:00:00+08:00" expirationTime: "2027-12-31T23:59:59+08:00"
运行机制:
Cron 触发时间到达 → 检查是否在有效期内 → 检查调度是否暂停 → 检查并发限制 → 检查依赖是否满足 → 生成实例并执行
Pipeline 不自动调度,仅在用户主动操作时运行。适用于一次性任务、调试或按需执行的场景。
trigger: type: manual
手动触发时可指定:
参数 | 说明 |
|---|---|
业务日期 | 实例对应的业务日期(bizDate) |
运行参数 | 覆盖 Pipeline 参数的默认值 |
通过 API 调用触发 Pipeline 执行,适用于与外部系统联动的场景(如上游系统完成数据推送后触发下游 ETL)。
trigger: type: external
调用方式:
# 通过 API 触发 curl -X POST "https://newide-api.volcengine.com/v1/pipelines/daily_order_etl/trigger" \ -H "Authorization: Bearer <token>" \ -d '{"bizDate": "2026-06-01", "parameters": {"region": "us"}}'
场景 | 推荐类型 | 说明 |
|---|---|---|
日常 ETL 任务 | scheduled | 固定周期运行 |
数据修复/重跑 | manual | 按需运行 |
事件驱动处理 | external | 上游完成后触发 |
开发调试 | manual | 开发阶段手动验证 |
跨系统联动 | external | 外部系统通过 API 集成 |
NewIDE 使用标准 5 字段 Cron 表达式:
┌──────── 分钟 (0-59) │ ┌────── 小时 (0-23) │ │ ┌──── 日 (1-31) │ │ │ ┌── 月 (1-12) │ │ │ │ ┌ 星期 (0-6, 0=周日) │ │ │ │ │ * * * * *
字符 | 含义 | 示例 |
|---|---|---|
| 每个值 |
|
| 枚举多个值 |
|
| 范围 |
|
| 步长 |
|
调度频率 | 表达式 | 说明 |
|---|---|---|
每分钟 |
| 每分钟执行一次 |
每 5 分钟 |
| 每 5 分钟执行一次 |
每小时 |
| 每小时整点执行 |
每天 02:00 |
| 每天凌晨 2 点 |
每天 08:30 |
| 每天上午 8 点 30 分 |
工作日 09:00 |
| 周一至周五 9 点 |
每月 1 日 |
| 每月 1 日 00:00 |
每周一 10:00 |
| 每周一 10 点 |
调度频率决定了 Pipeline 实例的业务时间(bizDate)粒度:
frequency 值 | 业务时间粒度 | 实例生成方式 |
|---|---|---|
| 分钟 | 每个调度时间点生成一个实例 |
| 小时 | 每个调度小时生成一个实例 |
| 天 | 每天生成一个实例 |
| 周 | 每周生成一个实例 |
| 月 | 每月生成一个实例 |
trigger: type: scheduled cronExpression: expression: "0 2 * * *" frequency: daily # 业务时间按天粒度
业务时间与调度时间的关系:
0 2 * * * + frequency: daily当多个 Pipeline 实例同时进入调度队列时,系统按优先级决定执行顺序。
在 Pipeline 配置文件中通过 priority 字段设置:
trigger: type: scheduled cronExpression: expression: "0 2 * * *" priority: d2 # 核心任务
优先级 | 标识 | 含义 | 适用场景 |
|---|---|---|---|
P1 |
| 最高优先级 | 核心 SLA 链路,必须最先执行。 |
P2 |
| 高优先级 | 核心业务 Pipeline |
P3 |
| 中优先级 | 重要日常任务 |
P4 |
| 低优先级 | 一般任务(默认) |
P5 |
| 最低优先级 | 非核心任务 |
通过 effectiveTime 和 expirationTime 控制调度的有效时间范围:
trigger: type: scheduled cronExpression: expression: "0 2 * * *" effectiveTime: "2026-01-01T00:00:00+08:00" # 调度开始生效时间 expirationTime: "2027-12-31T23:59:59+08:00" # 调度失效时间(可选)
字段 | 必填 | 说明 |
|---|---|---|
| 是 | 调度开始生效的时间。早于此时间不会触发实例。 |
| 否 | 调度失效时间。到达此时间后不再触发新实例。 |
典型场景:
apiVersion: newide.studio.dataleap.volc/v1 kind: Pipeline metadata: name: daily_order_etl displayName: 每日订单 ETL runAs: data_engineer spec: trigger: type: scheduled cronExpression: expression: "0 2 * * *" # 每天 02:00 frequency: daily # 按天调度 priority: d2 # 核心任务 effectiveTime: "2026-01-01T00:00:00+08:00" expirationTime: "2027-12-31T23:59:59+08:00" activities: - name: extract_orders type: sql engineType: emr_serverless_spark sqlScript: extract_orders.sql - name: transform_orders type: sql engineType: emr_serverless_spark sqlScript: transform_orders.sql dependsOn: activities: - extract_orders
实践 | 说明 |
|---|---|
错峰调度 | 避免大量 Pipeline 在同一时间调度,分散 Cron 触发时间。 |
合理设置优先级 | 仅核心链路使用 P1/P2,避免优先级膨胀。 |
使用 frequency 字段 | 明确声明业务频率,确保 bizDate 粒度正确。 |
设置有效期 | 临时任务务必设置 expirationTime,避免无限运行。 |
先 manual 后 scheduled | 新 Pipeline 先用 manual 模式调试通过,再切换为 scheduled。 |