在循环中运行参数化 Azure Databricks 作业任务
本文讨论如何将 For each
任务与 Azure Databricks 作业配合使用,包括有关在作业 UI 中添加和配置任务的详细信息。 使用 For each
任务在循环中运行任务,将一组不同的参数传递给任务的每次迭代。
将 For each
任务添加到作业需要定义两个任务:For each
任务和“嵌套任务”。 嵌套任务是为 For each
任务的每次迭代运行的任务,是 Azure Databricks 作业的标准任务类型之一。 不能将另一个 For each
任务添加为嵌套任务。
例如,可以使用 For each
任务对多个表执行一组常见的转换,并将表名列表中的表名传递给任务的每次迭代。
可以对 For each
任务使用哪些参数类型?
若要从 For each
任务传递参数,可以:
- 在创建或编辑任务时定义一个 JSON 格式的集合。
- 使用前一个任务传递的任务值。 有关任务值的详细消息,请参阅在 Azure Databricks 作业中的任务之间共享信息。
- 使用作业参数 若要了解有关作业参数的详细信息,请参阅为所有作业任务添加参数。
若要了解如何在添加或编辑 For each
任务时使用这些不同的参数类型,请参阅下一部分将“对于每个”任务添加到作业。
将 For each
任务添加到作业
在创建作业或在现有作业中编辑任务时,可以添加 For each
任务。 要配置 For each
任务,请:
在“类型”下拉菜单中,选择“对于每个”。
在“任务名称”字段中输入任务的名称。
在“输入”文本框中,定义要循环访问的
For each
任务的值。 可以是以下位置之一:一个 JSON 格式的值数组。 可以是以下数据类型的数组:
- 键值对
- 字符串、数字或布尔类型
- 任意复杂 JSON 对象
任务值引用。 若要引用前一个任务传递的任务值,请使用
{{tasks.<task_name>.values.<task_value_name>}}
语法在“输入”文本框中设置值。 例如,如果在For each
任务之前名为generate_countries_list
的任务设置了以下任务值:dbutils.jobs.taskValues.set(key = "countries", value = countries_array)
然后,
For each
任务使用以下语法在“输入”文本框中引用该任务值:{{tasks.generate_countries_list.values.countries}}
。作业参数。 若要引用作业参数,请在“输入”文本框中使用以下语法:
{{job.parameters.<name>}}
例如,{{job.parameters.countries}}
。若要选择设置可并行运行的迭代次数,请输入任务的“并发”值。 默认值是 1秒。
若要有选择地接收任务开始通知、成功通知或失败通知,请单击“+ 添加”。 请参阅针对作业事件添加电子邮件和系统通知。
若要完成
For each
任务的配置,并为每个迭代添加一个嵌套任务,请单击“添加要循环访问的任务”。为嵌套任务选择任务类型和配置选项。 嵌套任务是标准任务类型,具有相同的配置选项。 请参阅任务类型选项。
若要引用
For each
任务传递的参数,请单击“参数”。 使用{{input}}
引用将值设置为每次迭代的数组值,或者在循环访问对象列表时使用{{input.<key>}}
引用单个对象字段。单击“创建任务”。
在 For each
任务与嵌套任务之间切换
该 For each
任务在作业 UI 中显示为节点,其中包含 For each
节点内的 嵌套任务节点。 若要在 For each
任务和嵌套任务之间切换,请单击相应节点。
在下游任务中引用 For each
任务
For each
任务是顶级任务,下游任务可以将其指定为依赖项。 下游任务不能依赖或引用嵌套任务。
运行和监视包含 For each
任务的作业
运行包含 For each
任务的作业与运行其他作业相同。 请参阅运行作业。
查看和管理作业运行也与任何其他作业相同,但 For each
任务的任务运行历史记录除外,该历史记录以任务迭代表的形式显示。 请参阅查看“对于每个”任务的任务运行历史记录。