Databricks 为每个计划安排不同参数的工作流程

问题描述 投票:0回答:1

我在 Databricks,那里有一个 Python 笔记本,它从登陆处获取文件,处理它并保存增量表。

此笔记本包含一个参数(time_prm),它允许我对每天到达的不同版本的文件执行此选项。

具体来说,对于每个文件,我将有3个每日版本,命名法如下:file_202401070900、file_202401071200、file_202401071500。

我有一个运行此笔记本的工作流程,但我需要每天安排它 3 次,并且对于每次构建作业,我都需要获取相关文件。

例如,在 0900 时间表中,我需要获取文件版本 file_202401070900,因此我将插入 0900 作为 time_prm 参数。对于文件 file_202401071200 我将插入 1200 等

我可以创建同一工作流程的多个时间表并为每个时间表设置不同的时间参数吗?

您还有其他想法吗?对我来说,我必须创建 3 个不同的工作流程(总的来说,我有许多不同的文件),这似乎很奇怪,所以我想概括我的工作。

感谢您的帮助!

databricks scheduled-tasks workflow azure-databricks
1个回答
0
投票

两种选择:

  1. 单一工作流程/作业:
  • 将作业安排在每天 9 点、12 点和 15 点运行(例如
    0 9-15/3 * * *
    )。
  • 没有给出
    time_prm
    参数。
  • 编写代码,将当前时间四舍五入到最近的前 3 小时边界,并将其用作后缀。例如。如果当前时间为
    12:06pm
    ,则四舍五入为
    12:00
    并处理
    file_202401071200
    (即
    time_prm
    =
    1200
    )。

小问题是自动重试或临时重新处理等。如果 1200 作业由于某种原因失败(比如文件迟到),那么为了支持这种情况(即处理迟到的文件),您可能需要为您的作业支持一些额外的参数(例如文件名)。

  1. 三个工作流程/工作:
  • 安排 3 个单独的作业在每天 9 点、12 点和 15 点运行(例如
    0 9 * * *
    0 12 * * *
    0 15 * * *
    )。
  • 硬编码
    time_prm
    参数分别为
    0900
    1200
    1500
  • 基于
    file_20240107XXXX
    处理
    time_prm

与选项 1 相比,在这种情况下,只要您在同一天执行,后期文件处理或临时重新处理就会更简单。

我个人会选择#1,但是 WFYB。

© www.soinside.com 2019 - 2024. All rights reserved.